[PYTHON] [Discord.py] Cog verstehen


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 Zahnrad?

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 !!

Wie schreibe ich Cog

Befehl

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.

Veranstaltung

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.

Verwendung der Variablen 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.

Zahnrad hinzufügen

Wenn die gleiche Datei

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 !!

Wenn es sich um eine andere Datei handelt

.
┣━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 !!

Für andere Verzeichnisse als die oben genannten

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.

Was ist Erweiterung?

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.

Beispiel

.
┣━ 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))

Datei lesen

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.

Der wichtigste Typ, um Extension zu verwenden

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.

Schließlich

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

Recommended Posts

[Discord.py] Cog verstehen
Nest Zahnrad in discord.py
Verstehen Sie Zahnräder und Erweiterungen in discord.py
VQ-VAE verstehen
Verketten verstehen