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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:50:33