[PYTHON] [Discord.py] Comprendre Cog


J'ai étudié Cog dans Discord.py, donc j'ai écrit ce mémo et pour ceux qui ont dit "Je ne comprends pas même si j'ai lu la référence !!".


**: avertissement: Remarque: Ceci est une description de Cog. Si vous n'avez pas encore maîtrisé Discord.py, veuillez d'abord le maîtriser. ** **


Qu'est-ce que Cog ??

Qu'est-ce que Cog en premier lieu? ??

Dans le développement de Bot, vous souhaiterez peut-être combiner des commandes, des écouteurs et plusieurs états en une seule classe. Cog est la réalisation de cela.

Il est écrit dans Discord.py document, mais même si vous regardez cela, il y a des gens qui deviennent "sans signification" N'est-ce pas? (J'étais le même w)

En appliquant Cog, vous pouvez diviser le fichier Discord.py en deux fichiers ou plus, et vous pouvez facilement recharger le fichier même lorsque Bot est en cours d'exécution !!

Comment écrire Cog

commander

Lorsque vous n'utilisez pas Cog, écrivez comme suit lors de la définition de la commande,

@bot.command()
async def test(ctx):
    pass #Contenu d'exécution

Lors de la définition d'une commande dans Cog, écrivez comme suit.

@commands.command()
async def test(self,ctx):
    pass #Contenu d'exécution

La seule différence est que @ bot. ~ Est devenu @ commandes. ~ Et self a été ajouté à l'argument (en surface).

un événement

Lorsque vous n'utilisez pas Cog, écrivez comme suit lors de la définition d'un événement,

@bot.event
async def on_ready():
    pass #Contenu d'exécution

Lors de la définition d'un événement dans Cog, écrivez comme suit.

@commands.Cog.listener()
async def on_ready(self):
    pass #Contenu d'exécution

La différence est que @ bot.event est maintenant @ commands.Cog.listener () ʻand self` est ajouté à l'argument comme auparavant.

Comment utiliser la variable Bot

Lorsque vous n'utilisez pas Cog, lors de l'affichage du nom du Bot, écrivez comme suit,

print(bot.user)

Lorsqu'il est utilisé dans Cog, il ressemble à ceci:

print(self.bot.user)

La seule différence est que vous devez écrire «self».

Ajouter un rouage

Quand le même fichier

Tout d'abord, appelons Cog du même fichier.

main.py


import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!")

class Greetings(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self._last_member = None

    @commands.command()
    async def test(self,ctx):
        await ctx.send("test!")

bot.add_cog(Greetings(bot))

Je me sens comme cela. En d'autres termes, Cog est chargé avec bot.add_cog (nom de classe (bot)) !!

Quand c'est un autre fichier

.
┣━main.py
┗━sub.py

Si le répertoire de fichiers est comme ci-dessus et que vous voulez lire Class Greetings dans sub.py, vous pouvez le lire en faisant ce qui suit !!

main.py


import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!")

import sub

bot.add_cog(sub.Greetings(bot))

Tout d'abord, ʻimport sub charge sub.py, et bot.add_cog (sub.Greetings (bot)) charge Greetingsdanssub.py` !!

Pour les répertoires autres que ceux ci-dessus

Vous pouvez lire des répertoires autres que ceux ci-dessus en utilisant ʻimport` de la même manière. Pour plus d'informations, consultez Résumé de l'importation de fichiers dans Python 3.

Qu'est-ce que l'extension ??

L'extension est également mentionnée dans ci-dessus Cependant, c'est une fonction qui vous permet de recharger facilement le fichier même lorsque le Bot est en cours d'exécution.

En utilisant Extension, vous n'avez pas à spécifier le fichier en utilisant ʻimport`.

Exemple

.
┣━ main.py
┗━ sub.py

Si le répertoire de fichiers est comme ci-dessus, vous pouvez charger Greetings de sub.py en procédant comme suit !!

main.py


import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!")

bot.load_extension("sub")

sub.py


import discord
from discord.ext import commands

class Greetings(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self._last_member = None

    @commands.command()
    async def test(self,ctx):
        pass

def setup(bot):
    return bot.add_cog(Greetings(bot))

Lire le fichier

bot.load_extension() Code pour lire le fichier Cog. Vous pouvez le faire avec bot.load_extension (" nom de fichier ").

.
┣━ main.py
┗━ Cog
 ┗━ sub.py

Si le répertoire de fichiers ressemble à celui ci-dessus, vous pouvez le charger avec bot.load_extension (" Cog.sub ").

Le gars le plus important pour utiliser l'extension

def setup(bot):
    return bot.add_cog(Greetings(bot))

**: avertissement: l'extension ne peut pas être utilisée sans cela! ** Écrivez-le au bas du fichier. Comment écrire

def setup(bot):
    return bot.add_cog(Nom du cours(bot))

est.

finalement

Veuillez nous faire savoir si vous avez des questions ou des informations que vous souhaitez que nous ajoutions.


Fin de l'article précédent annonce Bot publicitaire J'ai fait. Donc, cette fois, je voudrais vous présenter Takkun's Server.

Ce serveur est un serveur de discussion créé par Takkun # 1643 et un serveur de support pour les bots créé par Takkun # 1643. À l'avenir, nous prévoyons de déplacer le serveur de support pour Advertising Bot ici également!

[participer] https://discord.gg/VX7ceJw

Recommended Posts

[Discord.py] Comprendre Cog
nest cog dans discord.py
Comprendre les rouages et les extensions dans discord.py
Comprendre VQ-VAE
Comprendre Concaténer