J'ai créé un bot de gestion de clubbat pré-connecté, alors j'ai remarqué cela. https://github.com/izmktr/yukarisan
on_ready est appelé lors de la connexion à discord En outre, il semble être déconnecté de la discorde de manière irrégulière, Il sera également appelé lorsque vous vous reconnecterez automatiquement.
Ici, il semble bon de combiner les informations dont vous disposez en interne avec les données de discord.py.
import discord
from discord.ext import tasks
from typing import List, Dict, Optional
#guild_Lier l'ID avec la classe interne
guildhash: Optional[Dict[int, GuildData]] = None
@client.event
def on_ready():
global guildhash
if guildhash is None:
#Traitement des charges
guildhash = {}
for g in client.guilds:
gdata = guildhash.get(g.id)
if gdata is None:
gdata = GuildData()
guildhash[g.id] = gdata
gdata.guild = g
Se produit lors de l'ajout / suppression de réactions, C'est on_reaction_add, on_reaction_remove, mais il ne peut pas être appelé. En général, un message environ 15 minutes après sa publication peut ne pas répondre. (Je pense que cela dépend de l'activité du serveur) Probablement, j'ai l'impression que on_message_delete ne vole pas lorsque cela se produit.
Puisque max_messages vaut 1000, j'ai pensé que cela pouvait être évité en l'augmentant, Je ne pourrais pas l'éviter même si j'en mets 100000 comme ça. (À la recherche de connaissances dans ce domaine)
#n'a aucun sens?
client = discord.Client(max_messages = 100000)
Vous pouvez utiliser on_raw_reaction_add et on_raw_reaction_remove pour vous assurer de voler. Enregistrez les informations du message avec on_message et utilisez on_raw_reaction_ ~ Ce serait bien de résoudre le processus.
De plus, il est appelé dans l'ordre on_raw_reaction_add → on_reaction_add. Si on_reaction_add vole ici, je pensais que ce serait on_raw_reaction_add s'il ne volait pas, Ce processus semble gênant car l'ordre est inversé.
Vous pouvez avoir une discussion privée avec le bot en envoyant un message au bot. Si vous souhaitez utiliser des commandes de développement, utilisez le chat privé Vous pouvez travailler sans voir les journaux autour de vous.
@client.event
async def on_message(message):
#Ignorer si l'expéditeur du message est Bot
if message.author.bot:
return
#Message normal
if message.channel.type == discord.ChannelType.text:
return
# 1:1 message
if message.channel.type == discord.ChannelType.private:
return
Le problème est que le type de message est différent de celui d'un message normal Il manque donc des variables de classe et des fonctions de classe.
De plus, comme il n'y a pas de guilde dans les messages privés, Vous devez spécifier la guilde dans votre message privé.
Si vous le concevez pour absorber cette différence et créer un traitement pour diverses commandes C'est le reflet que cela aurait été pratique.
Recommended Posts