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

discord.py中on_command事件未触发:无法捕获其他Bot命令

问题解答
  • 这属于Discord Bot库(以Discord.py为例)的默认安全限制。为避免Bot间互相触发命令引发循环或恶意行为,库会自动忽略来自其他Bot的命令调用,因此on_command事件不会被触发。
  • 要记录其他Bot的命令,需改用on_message事件监听所有消息,自行判断是否为其他Bot发送的命令。示例代码:
@bot.event
async def on_message(message):
    # 跳过自身发送的消息
    if message.author == bot.user:
        return
    # 检测是否为其他Bot发送的消息
    if message.author.bot:
        # 根据目标Bot的命令前缀判断是否为命令
        target_prefix = "!"  # 替换为目标Bot的命令前缀
        if message.content.startswith(target_prefix):
            print(f"其他Bot命令内容: {message.content},发送Bot: {message.author.name}")
    # 必须保留此句,否则自身Bot的命令会失效
    await bot.process_commands(message)
  • 注意:这种方式需要自行实现命令识别逻辑,同时确保你的Bot拥有服务器消息读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:55:27