#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я пытаюсь заставить своего бота отображать информацию о пользователях, если пользователь вводит профиль пользователя? [имя другого пользователя]’.
if message.content == 'profile?' user.mention:
x=display_players_smiles(str(user.mention))
y=display_players_frowns(str(user.mention))
embedVar = discord.Embed(title= str(user.mention), description="This is their profile", color=0x0210ff)
embedVar.add_field(name="Smiles", value=str(x), inline=False)
embedVar.add_field(name="Frowns", value=str(y), inline=False)
await message.channel.send(embed=embedVar)
Я попытался использовать user.mention, но это выдало мне ошибку.
Комментарии:
1. Есть ли какая-либо причина, по которой вы используете
on_message
события вместо команд? Это было бы намного проще для вас2. Нет причин, и я бы не возражал вместо этого использовать команды. Я просто не знаю, как использовать команды для этого.
Ответ №1:
Если у вас нет причин использовать команды, я приведу вам пример
@bot.command() # Or `client.command()` - depends how you named your bot instance
async def profile(ctx, user: discord.Member):
x = display_players_smiles(user.mention)
y = display_players_frowns(user.mention)
embedVar = discord.Embed(title=user.mention, description="This is their profile", color=0x0210ff)
embedVar.add_field(name="Smiles", value=str(x), inline=False)
embedVar.add_field(name="Frowns", value=str(y), inline=False)
await ctx.send(embed=embedVar)
Пара вещей, о которых стоит упомянуть:
- Вам нужно
intents.members
включить - В конце
on_message
события вам нужно добавить
await bot.process_commands(message) # Or `client.process..` - depends how you named it
- Не забывайте использовать
commands.Bot
, неdiscord.Client
, также не забывайте использовать только ОДИН, а не оба.
Взгляните на введение в команды, надеюсь, это прояснит для вас некоторые вещи.
Вот еще одна полезная ссылка о том, как включить намерения и привилегированные намерения, ссылка heer
Комментарии:
1. Я продолжаю получать эту ошибку
Ignoring exception in on_message
всякий раз, когда пытаюсь запустить код.2. В чем ошибка? Также предполагается, что вы должны удалить
profile
команду вon_message
событии, поскольку она у вас есть как команда3. Что такое eo? И да, я удалил свою старую команду для profile, и это единственная, которая у меня есть сейчас, но я все равно получаю ту же ошибку.
4. Я написал это в комментариях, я не знаю, как вы назвали свой экземпляр бота, вы можете позвонить
client
. Взгляните на свой код и посмотрите, используете ли выclient
илиbot
5.
Traceback (most recent call last): File "C:UsersGabe KAppDataLocalProgramsPythonPython38-32libsite-packagesdiscordclient.py", line 312, in _run_event await coro(*args, **kwargs) File "x-wingide-python-shell://114675904/2", line 162, in on_message AttributeError: 'MyClient' object has no attribute 'command' Ignoring exception in on_message
Я все еще получаю сообщение об ошибке, когда я переношу его на клиент, хотя на этот раз все по-другому.