Ich habe in Discord.py über Cog studiert, also habe ich dieses Memo geschrieben und für diejenigen, die sagten "Ich verstehe nicht, selbst wenn ich die Referenz lese !!".
**: Warnung: Hinweis: Dies ist eine Beschreibung von Cog. Wenn Sie Discord.py noch nicht beherrschen, beherrschen Sie es bitte zuerst. ** **.
Was ist Cog überhaupt? ??
In der Bot-Entwicklung möchten Sie möglicherweise Befehle, Listener und mehrere Status in einer Klasse kombinieren. Cog ist die Erkenntnis davon.
Es ist in Discord.py Documents geschrieben. Ist es nicht? (Ich war das gleiche w)
Durch Anwenden von Cog können Sie die Datei Discord.py in zwei oder mehr Dateien aufteilen und die Datei auch bei laufendem Bot problemlos neu laden !!
Wenn Sie Cog nicht verwenden, schreiben Sie Folgendes, wenn Sie den Befehl definieren:
@bot.command()
async def test(ctx):
pass #Ausführungsinhalt
Schreiben Sie beim Definieren eines Befehls in Cog wie folgt.
@commands.command()
async def test(self,ctx):
pass #Ausführungsinhalt
Der einzige Unterschied besteht darin, dass "@ bot. ~" Zu "@ -Befehlen" wurde. ~ "Und" self "wurde dem Argument (an der Oberfläche) hinzugefügt.
Wenn Sie Cog nicht verwenden und ein Ereignis definieren, schreiben Sie wie folgt:
@bot.event
async def on_ready():
pass #Ausführungsinhalt
Schreiben Sie beim Definieren eines Ereignisses in Cog wie folgt.
@commands.Cog.listener()
async def on_ready(self):
pass #Ausführungsinhalt
Der Unterschied besteht darin, dass "@ bot.event" jetzt "@ command.Cog.listener ()" ist und "self" wie zuvor zum Argument hinzugefügt wird.
Bot
Wenn Sie Cog nicht verwenden und den Namen des Bots anzeigen, schreiben Sie wie folgt:
print(bot.user)
In Cog sieht es folgendermaßen aus:
print(self.bot.user)
Der einzige Unterschied ist, dass Sie "Selbst" schreiben müssen.
Rufen wir zuerst Cog derselben Datei auf.
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))
Ich fühle mich so.
Mit anderen Worten, Cog wird mit bot.add_cog (Klassenname (bot))
geladen !!
.
┣━main.py
┗━sub.py
Wenn das Dateiverzeichnis wie oben ist und Sie Class Greetings
in sub.py
lesen möchten, können Sie es wie folgt lesen !!
main.py
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix="!")
import sub
bot.add_cog(sub.Greetings(bot))
Zuerst lädt import sub
lädt sub.py
undbot.add_cog (sub.Greetings (bot))
lädt Greetings
in sub.py
!!
Sie können andere Verzeichnisse als die oben genannten laden, indem Sie "import" auf die gleiche Weise verwenden. Weitere Informationen finden Sie unter Zusammenfassung zum Importieren von Dateien in Python 3.
Die Erweiterung wird auch in [oben] erwähnt (https://qiita.com/Takkun0530/items/45b4a6acd7c74e651ec2#cog%E3%82%B3%E3%82%B0%E3%81%A8%E3%81%AF). Es ist jedoch eine Funktion, mit der Sie die Datei auch bei laufendem Bot problemlos neu laden können.
Durch die Verwendung der Erweiterung können Sie die Verwendung von "Import" zum Angeben einer Datei vermeiden.
.
┣━ main.py
┗━ sub.py
Wenn das Dateiverzeichnis wie oben ist, können Sie Greetings
of sub.py
wie folgt laden !!
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 zum Lesen der Cog-Datei. Sie können dies mit bot.load_extension (" Dateiname ")
tun.
.
┣━ main.py
┗━ Cog
┗━ sub.py
Wenn das Dateiverzeichnis wie oben aussieht, können Sie es mit "bot.load_extension (" Cog.sub ")" laden.
def setup(bot):
return bot.add_cog(Greetings(bot))
**: Warnung: Die Erweiterung kann ohne diese nicht verwendet werden! ** Schreiben Sie es am Ende der Datei. Wie schreibt man
def setup(bot):
return bot.add_cog(Klassenname(bot))
ist.
Bitte lassen Sie uns wissen, wenn Sie Fragen oder Informationen haben, die wir hinzufügen sollen.
Ende des vorherigen Artikels wirbt für Werbebot Ich tat. Dieses Mal möchte ich "Takkun's Server" vorstellen.
Dieser Server ist ein Chat-Server, der von Takkun # 1643 erstellt wurde, und ein Support-Server für Bots, der von Takkun # 1643 erstellt wurde. In Zukunft planen wir, den Support-Server für Advertising Bot auch hier zu verlegen!
[sich beteiligen] https://discord.gg/VX7ceJw