#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я создаю бота discord, в котором пользователь может ввести префикс бота (например, «bonfire» здесь), а затем сообщение, чтобы оно заключало его в кавычки, и вы можете просмотреть цитату, когда захотите. Однако здесь есть аргумент, который никогда не вводится, и я не уверен, как я могу заставить пользователя ввести его?
@client.command()
async def quote(ctx,*,message:str,user):
string=str(message)
message_list=string.split()
await ctx.send(message user)
Проблема в том, что из-за сообщения * аргумент ‘user’ никогда не вводится. Например, пользователь может ввести цитату bonfire привет всем @example#1230, но @example#1230 никогда не сохраняется в переменной user, потому что каждое отправленное сообщение сохраняется в переменной message
Комментарии:
1. Сначала вы можете прочитать пользователя, а затем сообщение.
quote(ctx, user: discord.Member, *, message)
.message
имеет типstr
по умолчанию, вам не нужно вручную выполнять преобразование. Также не рекомендуется называть переменную после ключевого слова / импорта, напримерstring
.
Ответ №1:
Если вы все еще хотите, чтобы пользователь находился в конце команды, вы могли бы сделать что-то вроде этого:
@client.command()
async def quote(ctx,*, quote):
# Get user
try:
mention = quote.split(" ")[-1]
user = ctx.guild.get_member(int(mention[2:-1]))
except Exception:
discord.ext.commands.BadArgument("Expected Mention")
message = " ".join(quote.split(" ")[0: -1])
await ctx.send(message user)