Danke ~.
Ich bin Sumidora, die kürzlich eine Serverüberprüfung der Zwietracht gestartet hat. Bitte schauen Sie auf jeden Fall. Bitte.
https://note.com/sizumita
Als ich anfing, das ext.commands-Framework in discord.py zu verwenden, versuchten viele Leute, Cog zu verwenden, aber es funktionierte nicht. Ich möchte für eine solche Person erklären.
Wie in Erklärung von Cog beschrieben, werden Befehle, Listener und einige Status in einer Klasse in der Bot-Entwicklung beschrieben. Es wurde gemacht, um in zusammenzufassen. Zum Beispiel ist es so, als würde man Befehle nach Kategorien klassifizieren oder Listener nach Funktionen trennen. Es ist objektorientiert. Cog kann erstellt werden, indem eine Klasse erstellt wird, die Befehle erbt. So was:
from discord.ext import commands
class MyCog(commands.Cog):
pass
Um einen Befehl in Cog zu erstellen, verwenden wir eine etwas andere Methode. Normalerweise verwenden Sie beim Erstellen eines Befehls mit einem Bot "@ bot.command ()", aber wenn Sie einen Befehl in Cog erstellen, verwenden Sie "@ command.command ()". So was:
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('Beeindruckend!')
Wenn Sie ein Ereignis wie "@ bot.event" in Cog erhalten möchten, verwenden Sie "@ command.Cog.listener ()". Dieser Listener hat ein Namensargument, mit dem eine Funktion eines beliebigen Namens zu einem Listener gemacht werden kann! Da alle Listener unabhängig sind, können Sie auch so viele erstellen, wie Sie möchten. So was:
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 'Wie schön' in message.content:
await message.add_reaction('\U0001f44d')
Wenn Sie beispielsweise eine Funktion in bot verwenden möchten, z. B. "bot.reload_extension", müssen Sie auf die Bot-Instanz verweisen. Wenn Sie es also bei "init" übergeben, können Sie später darauf verweisen.
Es wird auch in Erweiterungsbeschreibung erwähnt, ist jedoch eine Funktion, die das Nachladen im laufenden Betrieb erleichtert. Mit dieser Option können Sie den Befehl ändern, ohne den Bot fallen zu lassen. Die Erweiterung kann laden / neu laden / entladen sein. ** Erweiterungsdateien erfordern die Setup-Funktion. ** Diese Setup-Funktion wird immer dann aufgerufen, wenn die Erweiterung geladen wird. Umgekehrt wird die Teardown-Funktion beim Entladen aufgerufen.
Zum Beispiel:
def setup(bot):
print('Geladen')
Sie können die Erweiterung verwenden, indem Sie einfach die Datei lesen, in der steht.
Ein Beispiel für eine Erweiterung ist hier.
Zahnrad in der Welt ist zum Beispiel:
from cogfile import MyCog
from discord.ext import commands
bot = commands.Bot()
bot.add_cog(MyCog(bot))
Sie können es auf diese Weise laden, aber wenn Sie den Inhalt von Cog ändern, möchten Sie möglicherweise neu laden, ohne den Bot fallen zu lassen. In einem solchen Fall ist die Anwendung mit der Kombinationstechnik von Zahnrad und Verlängerung sehr einfach! :: ::
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 'Wie schön' in message.content:
await message.add_reaction('\U0001f44d')
#Das ist wichtig
def setup(bot):
return bot.add_cog(MyCog(bot))
so
# from cogfile import MyCog
from discord.ext import commands
bot = commands.Bot()
# bot.add_cog(MyCog(bot))
bot.load_extension('cogfile')
Auf diese Weise können Sie es in einer Form laden, die das Nachladen im laufenden Betrieb ermöglicht!
Ungefähr 80% der Zahnräder auf der Welt verwenden sowohl Zahnrad als auch Erweiterung, aber viele Menschen vergessen die Setup-Funktion und erhalten beim Kopieren eine Fehlermeldung. ** Die Setup-Funktion ist erforderlich **.
Auch Zahnrad und Verlängerung sind unterschiedlich! Einige Leute haben es für dasselbe gehalten, also lassen Sie es mich bitte wissen.
Ich möchte diese Art von Erklärung / Kommentar zu Cog and Extension! Wenn Sie möchten, schreiben Sie bitte in die Kommentare.
Recommended Posts