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

Fermé
Hima12 Messages postés 1 Date d'inscription dimanche 12 février 2023 Statut Membre Dernière intervention 12 février 2023 - 12 févr. 2023 à 03:33
deristix Messages postés 55 Date d'inscription lundi 30 janvier 2023 Statut Membre Dernière intervention 23 février 2023 - 13 févr. 2023 à 22:40

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 lundi 30 janvier 2023 Statut Membre Dernière intervention 23 février 2023 43
13 févr. 2023 à 22:40

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