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 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 !!
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).
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.
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».
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))
!!
.
┣━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
Greetingsdans
sub.py` !!
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.
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`.
.
┣━ 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))
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 ")
.
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.
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