Merci ~.
Je suis Sumidora qui a récemment commencé un examen du serveur de discorde sur note. Veuillez regarder par tous les moyens. S'il vous plaît.
https://note.com/sizumita
Quand j'ai commencé à utiliser le framework ext.commands dans discord.py, de nombreuses personnes ont essayé d'utiliser Cog mais cela n'a pas fonctionné. Je voudrais expliquer pour une telle personne.
Comme décrit dans Explication of Cog, les commandes, les écouteurs et certains états sont décrits dans une classe de développement de Bot. Il a été fait pour résumer en. Par exemple, c'est comme classer les commandes par catégorie ou séparer les écouteurs par fonction. C'est orienté objet. Cog peut être créé en créant une classe qui hérite des commandes. Comme ça:
from discord.ext import commands
class MyCog(commands.Cog):
pass
Pour créer une commande dans Cog, nous utilisons une méthode légèrement différente.
Normalement, lors de la création d'une commande avec un bot, utilisez @ bot.command ()
, mais lors de la création d'une commande dans Cog, utilisez @ commands.command ()
.
Comme ça:
from discord.ext import commands
class MyCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def cat(self, ctx):
await ctx.send('Nyan?')
@commands.command()
async def dog(self, ctx):
await ctx.send('Hou la la!')
Si vous voulez obtenir un événement comme @ bot.event
dans Cog, utilisez @ commands.Cog.listener ()
.
Cet écouteur a un argument de nom qui peut être utilisé pour faire d'une fonction de n'importe quel nom un écouteur!
De plus, comme tous les auditeurs sont indépendants, vous pouvez en créer autant que vous le souhaitez.
Comme ça:
from discord.ext import commands
class MyCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener(name='on_message')
async def good_reaction(self, message):
if message.author.bot:
return
if 'Comme c'est gentil' in message.content:
await message.add_reaction('\U0001f44d')
Par exemple, si vous souhaitez utiliser une fonction dans un bot, telle que bot.reload_extension
, vous devez faire référence à une instance du bot. Donc, en le passant lorsque __init__
, vous pourrez vous y référer plus tard.
Il existe également une Description de l'extension, mais c'est une fonction qui facilite le rechargement à chaud. Avec cela, vous pouvez modifier la commande sans laisser tomber le Bot. L'extension peut être charger / recharger / décharger. ** Les fichiers d'extension nécessitent la fonction de configuration. ** Cette fonction de configuration est appelée chaque fois que l'extension est chargée. Inversement, la fonction de démontage est appelée lorsqu'elle est déchargée.
Par exemple:
def setup(bot):
print('Chargé')
Vous pouvez utiliser l'extension simplement en lisant le fichier qui dit.
Un exemple d'extension est ici
Cog dans le monde est, par exemple:
from cogfile import MyCog
from discord.ext import commands
bot = commands.Bot()
bot.add_cog(MyCog(bot))
Vous pouvez le charger en faisant, mais lorsque vous modifiez le contenu de Cog, vous voudrez peut-être recharger sans laisser tomber le Bot. Dans un tel cas, l'utilisation de la technique combinée de Cog et Extension rend l'application très facile! ::
cogfile.py
from discord.ext import commands
class MyCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener(name='on_message')
async def good_reaction(self, message):
if message.author.bot:
return
if 'Comme c'est gentil' in message.content:
await message.add_reaction('\U0001f44d')
#C'est important
def setup(bot):
return bot.add_cog(MyCog(bot))
Donc
# from cogfile import MyCog
from discord.ext import commands
bot = commands.Bot()
# bot.add_cog(MyCog(bot))
bot.load_extension('cogfile')
Ce faisant, vous pouvez le charger sous une forme qui permet le rechargement à chaud!
Environ 80% des Cogs dans le monde utilisent à la fois Cog et Extension, mais beaucoup de gens oublient la fonction de configuration et obtiennent une erreur lors de la copie. ** La fonction de configuration est requise **.
De plus, Cog et Extension sont différents! Certaines personnes l'ont confondu avec la même chose, alors faites-le moi savoir.
Je veux ce genre d'explication / commentaire sur Cog et Extension! Si vous le souhaitez, veuillez écrire dans les commentaires.
Recommended Posts