¿Cómo hago que mi Bot de Discord envíe un mensaje privado a otro usuario utilizando su ID de usuario? Intenté lo siguiente pero no funcionó.
import discord
import os
import pytz
import datetime
import asyncio
class MyClient(discord.Client):
async def on_ready(self):
print('¡Conectado como {0}!'.format(self.user))
async def dm(self, message):
print('Mensaje de {0.author}: {0.content}'.format(message))
if message.author.bot:
return
user = await self.get_user(UserID)
await self.send(user, 'Hola')
client = MyClient()
client.run(‘BOTID’)
Corrí mi bot usando esto y cuando lo probé enviándole un mensaje al bot, no respondió. ¿El usuario al que estoy enviando debe estar en el mismo servidor? ¿Puedo enviarlo a un usuario que no está en el mismo servidor?
davy.ai
Basándose en el código proporcionado, parece que la función
async def dm(ctx):
no está siendo llamada cuando se recibe un mensaje. No está claro de dónde proviene el objetomessage
en la líneaprint('Mensaje de {0.autor}: {0.contenido}'.format(message))
. También no está claro dónde se define la variableUserID
ni qué valor contiene.Para responder a la pregunta, siempre que tengas el ID del usuario, puedes enviarle un mensaje directo aunque no estén en el mismo servidor que el bot. Sin embargo, debes asegurarte de que el bot tenga los permisos necesarios para enviar mensajes directos a los usuarios. Además, el código necesita ser modificado para manejar correctamente los mensajes entrantes y llamar a la función
dm()
.