Discord.py установите идентификатор пользователя в качестве аргумента

#python #discord.py

Вопрос:

Я хочу создать команду, в которой в качестве аргумента после ctx используется идентификатор пользователя, чтобы бот отправил упоминание пользователя. Проблема в том, что я не знаю, каков синтаксис идентификатора пользователя. Я уже просматривал документацию, но не нашел там ответа.

Вот код.

 @client.command()
async def userid(ctx, member: discord.Member.id):
    await ctx.send(f'{member.mention})
 

Ответ №1:

Ты почти на месте.

Typehint преобразует имена пользователей, упоминания, идентификатор и отображаемое имя в объект-член, этот объект содержит все вышеперечисленное.

 @client.command()
async def userid(ctx, member: discord.Member):
    await ctx.send(member.mention)
 

Комментарии:

1. Поскольку синтаксис применим как для упоминания, так и для идентификатора, как сделать так, чтобы команда применялась только для идентификатора и игнорировала аргумент упоминания?

2. Извините, что вы имеете в виду?

3. Хорошо, здесь, поэтому, когда я набираю команду, сам участник подает заявку на идентификатор и упоминает, например, префикс бота»!», и я написал !идентификатор пользователя «идентификатор пользователя» там, это сработало, и использование !идентификатор пользователя «@пользователь» также работает, я на самом деле хочу, чтобы команда принимала только идентификатор в качестве аргумента и не упоминала. Есть ли какой-либо способ заставить бота игнорировать команду, когда пользователь вводит команду с упоминанием пользователя, а не с идентификатора.

4. Возможно, есть способ, но это было бы грязно и не идеально, все дело в том, что член-это объект-член, который содержит всю эту информацию. Подсказка типа автоматически преобразует идентификатор участника в объект участника.

5. О, я понимаю, тогда ладно.