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

如何让Discord bot向所有已加入服务器的可访问文本频道发送消息

代码修改方案

实现逻辑

要实现向所有有权限的文本频道群发,只需要遍历bot已加入的所有服务器,筛选符合条件的频道后逐一发送即可,具体判断逻辑如下:

  • 遍历bot关联的所有服务器(client.guilds)
  • 对每个服务器下的所有频道做两层校验:
    1. 频道类型为普通文本频道,排除语音频道、频道分类、帖子频道等非文本类型
    2. bot自身在该频道拥有发送消息的权限
  • 对符合条件的频道提交发送任务

完整修改代码

import discord # 若已导入可忽略该行

# 原固定单频道逻辑替换为下方遍历逻辑
for guild in client.guilds:
    for channel in guild.channels:
        # 校验频道类型和发送权限
        if channel.type == discord.ChannelType.text and channel.permissions_for(guild.me).send_messages:
            # 注意原代码的send调用末尾缺少右括号,此处已补全
            client.loop.create_task(channel.send("abc"))

可选优化建议

  • 如果需要跳过部分指定频道,可以新增黑名单判断逻辑,比如if channel.id not in [需要排除的频道ID1, 需要排除的频道ID2],加入判断条件即可
  • 若服务器和频道数量较多,可在发送逻辑中添加少量延时避免触发Discord官方的请求频率限制,导入asyncio后在发送前添加await asyncio.sleep(0.3)即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:15:03