API Discord.py pour discord bot pour écouter le message et supprimer le message en question

Je cherche à créer un bot qui utilise l'API VirusTotal pour analyser les URL envoyées dans les messages discord et si elles sont détectées, elles supprimeront le message en question, enverront un avertissement et enregistreront la situation dans un canal modlogs. Ceci est le code de mon on_message jusqu'à présent.

@bot.event
async def on_message(message):
urls = regex.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',message.content.lower())
flag = False
for i in urls:
if (scan_url(i)):
flag = True
break
if flag:
#delete message, send warning, find the channel named "modlogs" and send the log

scan_urlsera utilisé pour vérifier chaque url individuellement et renvoie vrai si le lien en question est malveillant. Je suis cependant bloqué sur l'utilisation du bot.eventdécorateur et juste une chaîne du message sur la façon de trouver le message en question, de le supprimer, d'envoyer l'avertissement dans le même canal, puis de l'ajouter aux journaux de mod.


Solution du problème

if flag:
await message.channel.send(send_warning_message_here) # Send warning message
modlogs_channel = discord.utils.get(message.guild.text_channels, name='modlogs') # Get modlogs channel
await modlogs_channel.send(send_log_message_here) # Send log
await message.delete() # Delete the message

Vous pouvez également vérifier si le contenu du message commence par https://ou http://.

if message.content.startswith('https://') or message.content.startswith('http://):
# Scan URL

Cela aide à effectuer des appels d'API uniquement lorsque cela est nécessaire.

Commentaires

Posts les plus consultés de ce blog

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables