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

discord.py添加on_message事件后指令失效 需事件与指令同时生效

故障原因

重写on_message事件会覆盖discord.py内置的默认消息处理逻辑,框架不会自动将收到的消息转发给指令解析模块,因此所有通过@bot.command()注册的指令都无法被触发。on_ready属于客户端连接生命周期事件,不经过消息处理流程,所以始终可以正常运行。

修复方法

在自定义的on_message事件逻辑末尾添加await bot.process_commands(message),手动将消息对象传递给指令处理器,即可同时实现消息监听和指令响应功能。

修正后代码
@bot.event
async def on_message(message):
    if message.content == "hey it looks like you already have a full bank BUD":
        await message.channel.send('pls use banknote')
    # 手动将消息移交指令处理流程
    await bot.process_commands(message)

@bot.command()
async def d(ctx):
    print(Fore.BLUE + ('Running Farmer 1.0 - Dank Memer') + Fore.RESET)
    while True:
        await ctx.send('pls fish')
        await ctx.send('pls dig')
        await ctx.send('pls hunt')
        await ctx.send('pls beg')
        await ctx.send('pls dep all')

额外提示:上述指令中的无间隔无限循环会高频发送消息,极易触发Discord平台风控或Dank Memer的反作弊机制,建议在循环末尾添加适当延时,例如引入asyncio模块后添加await asyncio.sleep(35)匹配Dank Memer的命令冷却时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:12:17