#python #discord #discord.py
Вопрос:
У меня есть бот для разногласий с командой !sad
. При выполнении бот должен ответить случайным string
от sad_list
.
sad_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]
@client.command()
async def sad(ctx, user: discord.Member=None):
print("running 'sad'")
if user is None:
await ctx.send(f"{sad_list[randint(0, len(sad_list))]} <3")
Я хочу, чтобы бот пометил кого-то, если вы выполните команду с user: discord.Member
аргументом.
Предпочтительный выход:
@user#0000 [positive message] <3
в отличие от только
[Positive message] <3
Следующее уже было опробовано:
if user is None:
await ctx.send(f"{ctx.message.author} {sad_list[randint(0, len(sad_list))]} <3")
else:
await ctx.send(f"{user} {sad_list[randint(0, len(sad_list))]} <3")
Однако это просто пишет:
user#0000 [positive comment] <3
В отличие от фактического упоминания о них
Комментарии:
1. Почему нет —
ctx.send(f"@{user} {sad_list[randint(0, len(sad_list))]} <3")
2. @PCM, что заставляет бота говорить
@user#0000 [positive message] <3
. Но на самом деле не упоминайте пользователя
Ответ №1:
Используйте user.mention
для упоминания пользователей
await ctx.send(f"{user.mention} {sad_list[randint(0, len(sad_list))]} <3")
Для будущих ссылок вы также можете упомянуть пользователей следующим образом: <@!user_id>
, user_id
заменить фактическим идентификатором пользователя. Вы можете использовать это в тех случаях, когда user.mention
это непрактично.
Ответ №2:
если вы хотите упомянуть пользователя, просто введите
await ctx.send(f"{user.mention} {sad_list[randint(0, len(sad_list))]} <3")