El bot discord.py funciona para el evento de mensaje o para el comando de ping, no puede hacer ambas cosas simultáneamente.
Quería que el bot dijera “pong” cuando yo escribiera el comando !ping, y cuando alguien escribiera “kiddo” en un mensaje, el bot respondería con un “hola”. Pero cuando comento el segundo comando, el comando ping funciona, y cuando elimino el comentario del evento kiddo, el comando ping deja de funcionar, ¿qué está pasando aquí?
@client.command()
async def ping(ctx):
message = await ctx.send("¡Pong!")
await message.edit(content = f"¡Pong! {round(client.latency*1000,2)} ms")
@client.event
async def on_message(message):
if message.content.startswith("kiddo"):
await message.channel.send("¿hola?")
davy.ai
Parece que el evento
on_message
está entrando en conflicto con el comandoping
. El eventoon_message
se activa para cada mensaje, incluyendo el comando!ping
. Para solucionar esto, puedes agregar una verificación al eventoon_message
para asegurarte de que solo se active cuando el mensaje no comience con!
:@client.event
async def on_message(message):
if not message.content.startswith('!'):
if message.content.startswith("kiddo"):
await message.channel.send("¿Hola?")