discord.py开发中如何让/say命令支持多词内容输入
问题原因
discord.py 前缀命令默认按空格切割用户输入内容作为入参,当前say命令仅定义了单个string: str参数,因此只会匹配第一个空格前的文本,后续内容会被丢弃,导致多词输入仅返回第一个单词。
修复方案
在参数前添加*修饰符即可,该修饰符会让discord.py将该参数之后的所有输入内容完整合并为单个字符串传入,不再按空格分割。
修改后的完整代码:
import discord from discord.ext import commands bot = commands.Bot(command_prefix='/') @bot.command() async def say(ctx, *, string: str): await ctx.send(string) bot.run('Token')
额外说明
- 若需要限制输入长度,可给参数添加长度限制配置,示例:
string: str = commands.parameter(max_length=2000),适配Discord单条普通消息的最大长度限制。 - 当前实现的是前缀为
/的普通文本命令,并非Discord官方的斜杠应用命令,若要实现原生斜杠命令需额外注册应用命令逻辑。
内容的提问来源于stack exchange,提问作者Nathan Riptidal
相关产品推荐
相关产品推荐

