我想通过聊天机器人发送消息。当我向昵称没有"空格"的用户发送消息时,如:John#1234或Im_the_best_traveller#1234等,但当我向昵称包含多个单词的用户发送消息时,如:Trying hard#1234等,程序只看到昵称的第一个单词。
@bot.command()
async def sender(user: discord.User, *,content:str):
await user.send(content)
I've try to
@bot.command()
async def sender(user: ,*, discord.User, content:str):
await user.send(content)
但是在我想要发送的消息之后,由程序作为昵称的一部分计数。
这是文本命令的限制。参数之间用空格分隔。当您使用*, param
时,您表示所有剩余的参数必须由最后一个参数消耗。没有办法让两个参数消耗可变数量的参数,毕竟您的命令将无法分隔它们(了解更多)。
要解决这种情况,您有一些选择:
- 引用多字用户名(例如:
"Trying hard#1234"
); - 使用用户ID或提及,只需要一个参数;
- 请求在命令执行期间发送的消息(更复杂);
- 将您的命令转换为斜杠命令,其中没有此限制。