Solución:
Así que finalmente descubrí cómo hacer esto después de unos días de prueba y error con la esperanza de que otros se beneficiaran de esto y tuvieran menos dolor del que yo realmente tenía. La solución fue, en última instancia, fácil …
if message.content.startswith('!best'):
myid = '<@201909896357216256>'
await client.send_message(message.channel, ' : %s is the best ' % myid)
Si está trabajando con comandos, es mejor usar las funciones de comando integradas de discord.py, su comando de abrazo se convertirá en:
import discord
from discord.ext import commands
@commands.command(pass_context=True)
async def hug(self, ctx):
await self.bot.say("hugs {}".format(ctx.message.author.mention()))
Esto es asumiendo que ha hecho algo como esto al comienzo de su código:
def __init__(self):
self.bot = discord.Client(#blah)
A partir de una User
objeto, usa el atributo User.mention
para obtener una cadena que represente una mención para el usuario. Para obtener un objeto de usuario de su ID, necesita Client.get_user_info(id)
. Para obtener un usuario de un nombre de usuario (‘CERO’) y discriminador (‘# 6885’) use la función de utilidad discord.utils.get(iterable, **attrs)
. En contexto:
if message.content.startswith('!best'):
user = discord.utils.get(message.server.members, name="ZERO", discriminator = 6885)
# user = client.get_user_info(id) is used to get User from ID, but OP doesn't need that
await client.send_message(message.channel, user.mention + ' mentioned')