[PYTHON] Übergeben Sie Argumente in discord.py an Task

Annahme

Hinweis

Der Code in diesem Artikel dient nur zu Illustrationszwecken und ist nicht für die Verwendung in der Produktion vorgesehen. Bitte schreiben Sie es entsprechend Ihrer Anwendung entsprechend um.

Was du machen willst

Ich möchte ein Argument an "Task" übergeben

Warum ich tun will

Grundsätzlich werden Aufgaben, die regelmäßig ausgeführt werden, häufig beim Starten des Bots gestartet. Manchmal möchten Sie jedoch den Startzeitpunkt und den Zielkanal mit Befehlen steuern. Zum Beispiel ** "Ich möchte, dass Sie in 30 Minuten alle 5 Minuten den Zeitbericht auf dem angegebenen Kanal erwähnen" **.

Derzeit gibt es jedoch kein Beispiel im Dokument discord.py, in dem Task (https://discordpy.readthedocs.io/ja/latest/ext/tasks/index.html) ein Argument enthält.

Methode

Fügen Sie zunächst der Aufgabe, die Sie regelmäßig ausführen möchten, ein Argument hinzu. Stellen Sie sich beispielsweise den Fall vor, in dem eine Erwähnung an die Person gesendet wird, die den Befehl in dem Kanal gesendet hat, in dem der Befehl eingegeben wird. In diesem Fall können Sie den Kanal und den Absender identifizieren, wenn Sie zum Zeitpunkt der Befehlseingabe den "Kontext" als Argument erhalten.

from discord.ext import tasks, commands

class MyCog(commands.Cog):
    def __init__(self):
        pass

    def cog_unload(self):
        self.reminder.cancel()

    @tasks.loop(minutes=5.0, count=6)
    async def reminder(self, ctx, content):
       await ctx.send("<@{0}> {1}".format(ctx.author.id, content))

Wenn Sie eine solche Erinnerung definieren, werden Sie nur durch Starten daran erinnert. Wie übergeben Sie dieses Argument "ctx"?

Übergeben Sie das Task-Argument an start ()

Wie der Titel schon sagt. Sie können es an start () übergeben, das beim Start der Aufgabe verwendet wird. Die an start () übergebenen * args und ** kawrgs werden so übergeben, wie sie als Argumente der entsprechenden Task sind. So können Sie beispielsweise den folgenden Entfernungsbefehl definieren.

from discord.ext import tasks, commands

class MyCog(commands.Cog):
    def __init__(self):
        pass

    def cog_unload(self):
        self.reminder.cancel()

    @tasks.loop(minutes=5.0, count=6)
    async def reminder(self, ctx, content):
       await ctx.send("<@{0}> {1}".format(ctx.author.id, content))

    @commands.command()
    async def set_reminder(self, ctx, content):
        self.reminder.start(ctx, content) #Wichtig hier
        await ctx.send("Ich habe eine Erinnerung gesetzt")

Wenn Sie nun den Befehl "set_reminder" an den Chat senden, wird der vorgegebene Inhalt alle 5 Minuten erwähnt. Der Punkt ist "self.reminder.start (ctx, content)", und es ist in Ordnung, wenn Sie bedenken, dass das an "start ()" übergebene Argument direkt an das von diesem "start ()" gestartete Argument der Task übergeben wird.

Hinweis

Wie ich am Anfang geschrieben habe, ist dieser Code selbst nicht für die Produktion gedacht. Ich bin gespannt, was passiert, wenn eine andere Person innerhalb von 30 Minuten nach Eingabe von set_reminder auf set_reminder trifft.

Bitte beachten Sie, dass dies nur ein Pseudocode ist, um die Übergabe von Argumenten an Task zu erklären. (Aber bitte lassen Sie mich wissen, wenn es fatale Fehler wie Grammatikfehler gibt.)

Recommended Posts

Übergeben Sie Argumente in discord.py an Task
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
[Python / Tkinter] Übergeben von Argumenten an den Befehl
Einführung in discord.py (2)
So empfangen Sie Befehlszeilenargumente in Python
Lassen Sie uns verstehen, wie Argumente übergeben werden (Python Edition)
Übergeben von Einstellungen an Item Pipeline in Scrapy
Nest Zahnrad in discord.py
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
Aktualisierte Nachrichten in discord.py
Übergeben Sie sich in der Klasse nicht an ProcessPoolExecutor
So übergeben Sie die Backend-Einstellung von matplotlib mit einer Umgebungsvariablen
Definieren Sie eine Aufgabe zum Festlegen der Fabric-Umgebung in YAML
[ECS] [Fargate] Skript zum Abrufen der Task-ID im TASK-Ausführungscontainer
So löschen Sie stdout in Python
Melden Sie sich auf der Website in Python an
Empfangen Sie Laufzeitargumente in Python 2.7
Wie man in Python entwickelt
Einführung in discord.py (3) Verwenden von Stimme
Übergeben Sie den Text an Django genericview
Post an Slack in Python
Dinge, auf die Sie achten müssen, wenn Sie Standardargumente in Python verwenden
Übergeben von Argumenten mithilfe einer Instanz mit dem systemctl-Befehl von systemd
Ich möchte den G-Test in einem Monat Tag 1 bestehen
Vorsichtsmaßnahmen beim Festlegen von Standardwerten für Argumente in Python-Funktionsdefinitionen