Ich habe einen Clubbat-Management-Bot vor dem Verbinden erstellt, also habe ich das bemerkt. https://github.com/izmktr/yukarisan
on_ready wird aufgerufen, wenn eine Verbindung zu Zwietracht hergestellt wird Auch scheint es unregelmäßig von der Zwietracht getrennt zu sein, Es wird auch aufgerufen, wenn Sie die Verbindung automatisch wiederherstellen.
Hier scheint es gut, die Informationen, die Sie intern haben, mit den Daten von discord.py zu kombinieren.
import discord
from discord.ext import tasks
from typing import List, Dict, Optional
#guild_ID mit interner Klasse verknüpfen
guildhash: Optional[Dict[int, GuildData]] = None
@client.event
def on_ready():
global guildhash
if guildhash is None:
#Lastverarbeitung
guildhash = {}
for g in client.guilds:
gdata = guildhash.get(g.id)
if gdata is None:
gdata = GuildData()
guildhash[g.id] = gdata
gdata.guild = g
Tritt beim Hinzufügen / Entfernen von Reaktionen auf, Es ist on_reaction_add, on_reaction_remove, kann aber nicht aufgerufen werden. Im Allgemeinen antwortet eine Nachricht etwa 15 Minuten nach dem Posten möglicherweise nicht. (Ich denke, es hängt von der Aktivität des Servers ab) Wahrscheinlich habe ich das Gefühl, dass on_message_delete in diesem Fall nicht fliegt.
Da max_messages 1000 ist, dachte ich, dass es durch Erhöhen vermieden werden könnte, Ich könnte es nicht vermeiden, selbst wenn ich 100000 so setzen würde. (Auf der Suche nach Wissen in diesem Bereich)
#bedeutungslos?
client = discord.Client(max_messages = 100000)
Sie können on_raw_reaction_add und on_raw_reaction_remove verwenden, um sicherzustellen, dass Sie fliegen. Speichern Sie die Nachrichteninformationen mit on_message und verwenden Sie on_raw_reaction_ ~ Es wäre schön, den Prozess zu lösen.
Außerdem wird es in der Reihenfolge on_raw_reaction_add → on_reaction_add aufgerufen. Wenn on_reaction_add hierher fliegt, dachte ich, es wäre on_raw_reaction_add, wenn es nicht fliegen würde. Dieser Vorgang scheint problematisch zu sein, da die Reihenfolge umgekehrt ist.
Sie können einen privaten Chat mit dem Bot führen, indem Sie eine Nachricht an den Bot senden. Wenn Sie Entwicklungsbefehle verwenden möchten, verwenden Sie den privaten Chat Sie können arbeiten, ohne die Protokolle um Sie herum zu sehen.
@client.event
async def on_message(message):
#Ignorieren Sie, wenn der Absender der Nachricht Bot ist
if message.author.bot:
return
#Normale Nachricht
if message.channel.type == discord.ChannelType.text:
return
# 1:1 Nachricht
if message.channel.type == discord.ChannelType.private:
return
Das Problem ist, dass sich der Nachrichtentyp von dem einer normalen Nachricht unterscheidet Es fehlen also Klassenvariablen und Klassenfunktionen.
Da es in privaten Nachrichten keine Gilde gibt, Sie müssen die Gilde in Ihrer privaten Nachricht angeben.
Wenn Sie es so gestalten, dass es diesen Unterschied aufnimmt und die Verarbeitung für verschiedene Befehle erstellt Es ist eine Überlegung, dass es bequem gewesen wäre.
Recommended Posts