You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:36:04