Discord Bot关闭Tabby后状态无法自动切换问题求助
Discord Bot 状态切换问题解决方案
你的问题核心有两个:一是状态切换任务只执行了一轮就结束,二是函数名拼写错误(precence应为presence)。关闭Tabby后进程进入后台,若任务没有循环逻辑,自然不会再切换状态。
修正后的代码
@bot.event async def on_ready(): # 等待Bot完全初始化后启动状态更新任务 bot.loop.create_task(update_presence()) async def update_presence(): while True: try: # 显示服务器数量 await bot.change_presence(activity=discord.Game(name=f"{len(bot.guilds)} servers")) await asyncio.sleep(5) # 显示用户数量 await bot.change_presence(activity=discord.Game(name=f"{len(bot.users)} users")) await asyncio.sleep(5) # 显示帮助提示 await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="!help")) await asyncio.sleep(5) except Exception as e: print(f"状态更新出错: {e}") await asyncio.sleep(5) # 出错后延迟重试,避免频繁报错
关键修改点
- 把状态逻辑改成无限循环,让任务持续运行
- 将任务启动移到
on_ready事件中,确保Bot完成初始化后再执行状态切换 - 增加异常捕获,避免任务因意外报错终止
- 修正了函数名的拼写错误
额外提示
如果关闭Tabby后Bot进程直接终止,说明你是在终端前台运行的。可以用以下方式让Bot在后台持续运行:
- Linux/macOS:使用
nohup python3 your_bot.py &命令 - Windows:创建批处理脚本,或者使用后台运行工具
内容的提问来源于stack exchange,提问作者Nikkklasss
相关产品推荐
相关产品推荐

