Besoin d'aide pour un bot discord codé en Python

Hima12 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
deristix Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour, 

Je cherche a codé un bot Python qui doit surveiller un channel spécifique. Quand un utilisateur envoie "sd", le bot doit, 1 minutes après, le ping. Il doit faire ça pour tout les utilisateurs évidemment, et ne doit pas reset le timeur si "sd" est réécrit avant 1 minutes. 
Fin bref, tout semble pas mal dans mon code, le bot a toute les perm qu'il faut, cependant, quand je le lance, il ne trouve aucun message.content et considère tout les messages comme vide, bien qu'il les détectes.
Cependant, il détecte le contenue des messages privés..
Enfin bref, voici le code : 
 

import discord
import asyncio
import datetime

intents = discord.Intents.default()
intents.members = True
intents.messages = True

client = discord.Client(intents=intents)
timers = {}

@client.event
async def on_ready():
    print(f'Logged in as {client.user}')

@client.event
async def on_message(message):
    if message.channel.type != discord.ChannelType.text:
        return

    print(f"Received message from {message.author}")
    print(f"Message content: {message.content}")
    if message.content.strip().lower() == "sd":
        print(f'Detected "sd" message from {message.author} at {datetime.datetime.now()}')
        now = datetime.datetime.now()
        last_sd_time = timers.get(message.author.id)

        if last_sd_time is not None and (now - last_sd_time).total_seconds() < 1 * 60:
            print(f'Ignoring "sd" message from {message.author} as it was sent less than 1 minute ago at {last_sd_time}')
            return

        timers[message.author.id] = now
        print(f'Starting timer for {message.author}')
        await asyncio.sleep(1 * 60)
        await send_ping(message)
    else:
        print(f"Message not matching criteria: {message.content}")


async def send_ping(message):
    user = message.author
    print(f'Pinging {user} at {datetime.datetime.now()}')
    await message.channel.send(f"{user.mention}, tu peux drop !")

client.run('token')


Log : 

Received message from Hima
Message content: 
Message not matching criteria: 

J'espère que quelqu'un pourra m'aider, je ne sais pas du tout quoi faire..

1 réponse

deristix Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   43
 

Le problème pourrait être dû à la définition des intents dans votre code. Vous avez défini les intents par défaut et activé les intents de messages et de membres. Cependant, pour accéder au contenu des messages dans un canal de texte, vous devez également activer l'intent "messages". Voici comment définir correctement les intents :

intents = discord.Intents.default()
intents.members = True
intents.messages = True
intents.guild_messages = True

client = discord.Client(intents=intents)

Essayez de faire ces modifications et vérifiez si cela résout votre problème.

1