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

如何修改Discord bot代码实现全服务器广播且避开规则频道

实现方案

Discord 官方给社区服务器的规则频道提供了专属的标识属性,不需要匹配频道名关键词即可精准识别,直接在遍历频道时过滤该属性对应的频道即可,还可以额外优化优先发送到服务器默认的系统通知频道,降低对其他频道的打扰。

修改后代码如下:

@client.command(pass_context=True)
async def broadcast(ctx, *, msg):
    for server in client.guilds:
        # 优先尝试发送到服务器默认的系统通知频道(欢迎消息默认发送频道)
        if server.system_channel:
            try:
                await server.system_channel.send(msg)
                continue
            except Exception:
                pass
        # 系统频道不可用时遍历其他文字频道
        for channel in server.text_channels:
            # 跳过服务器规则频道
            if channel == server.rules_channel:
                continue
            try:
                await channel.send(msg)
            except Exception:
                continue
            else:
                break

改动说明

  • 新增优先发送到server.system_channel逻辑:该频道是服务器管理员设置的默认系统通知频道,本身就用于发送官方通知类内容,比随机遍历频道发送更符合服务器使用习惯
  • 新增规则频道过滤逻辑:通过server.rules_channel直接匹配官方标识的规则频道,无需适配不同服务器的规则频道命名,识别准确率100%
  • 保留原有异常捕获逻辑,自动跳过没有发送权限的频道

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:04