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

Discord机器人关机命令失效求助:exit()/quit()未执行

Discord机器人关机命令exit()/quit()不生效的解决办法

你遇到的问题是:shutdown命令里的print和ctx.send能正常执行,但exit()或quit()无法关闭机器人。这是因为Discord.py基于异步事件循环运行,直接用这两个方法属于强制终止,会被事件循环拦截,无法正确结束整个进程。

解决方法

优先使用Discord.py官方提供的优雅关闭方式,再结合进程终止方法确保机器人彻底退出:

修改后的代码示例

import os
from discord.ext import commands

@commands.has_permissions(view_audit_log=True)
async def shutdown(ctx):
    print('Bot is shutting down')
    await ctx.send('@PercyJackson and @Berekyah the bot is being shut down')
    # 优雅关闭机器人连接,清理资源
    await ctx.bot.close()
    # 强制终止进程,确保彻底退出
    os._exit(0)

关键说明

  1. ctx.bot.close():这是官方推荐的关闭方式,会断开与Discord网关的连接,清理所有异步任务,让事件循环正常结束。
  2. os._exit(0):如果仅用close()后进程仍未退出,调用这个方法可以直接终止当前进程(注意是os._exit,不是内置的exit)。
  3. 若你使用的是discord.Client而非commands.Bot,将ctx.bot.close()替换为ctx.client.close()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:09:46