Я пытаюсь отправить сообщение через бота в дискорде. Он отлично работает, когда я отправляю сообщение пользователям, чьи никнеймы не содержат «пробелов», например: John#1234 или Im_the_best_traveller#1234 и т. д., но когда пользователям, чьи никнеймы состоят из нескольких слов, например: Trying hard#1234 и т. д., программа видит только первое слово никнейма.
@bot.command()
async def sender(user: discord.User, *,content:str):
await user.send(content)
я пытался
@bot.command()
async def sender(user: ,*, discord.User, content:str):
await user.send(content)
но после сообщения, которое я хочу отправить, засчитывается программой как часть ника.
Это ограничение текстовых команд. Аргументы разделяются пробелом. Когда вы используете *, param
, вы сигнализируете, что все оставшиеся аргументы должны быть использованы последним параметром. Невозможно иметь два параметра, которые потребляют переменное количество аргументов, ведь ваша команда не сможет их разграничить (подробнее).
Чтобы обойти эту ситуацию, у вас есть несколько альтернатив:
"Trying hard#1234"
);