Discord.py如何修改/writing命令使其响应所有@writer角色用户的消息
代码修改方案
你只需调整校验函数check的判断逻辑即可实现需求,修改后的完整代码如下:
@bot.command(aliases=['writing']) async def shiritori(ctx): def check(msg): # 仅响应当前频道内的消息 if msg.channel != ctx.channel: return False # 判断消息发送者是否拥有writer身份组 return any(role.name == 'writer' for role in msg.author.roles) while True: msg = await bot.wait_for('message', check=check) # 改为发送用户输入的纯文本内容,原str(msg)会返回消息对象原始结构 await ctx.send(msg.content)
主要修改说明
- 移除了原逻辑中仅匹配命令发起者的
msg.author == ctx.author校验规则 - 新增身份组校验逻辑:通过遍历消息发送者的所有身份组,匹配到名称为
writer的身份组即可通过校验 - 优化返回内容:将原
str(msg)改为msg.content,仅返回用户输入的纯文本内容,避免输出消息对象的冗余结构信息
注意:如果你的服务器中writer身份组的名称存在大小写、特殊符号差异,需要将代码中
role.name == 'writer'的匹配值修改为和服务器内身份组完全一致的内容。
内容的提问来源于stack exchange,提问作者Yanbunny
相关产品推荐
相关产品推荐

