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

Discord机器人间隔切换状态不生效 如何实现状态循环切换功能?

问题原因

  • 状态更新代码写在client.run()之前,机器人还未完成登录,代码就已经全部执行完毕,自然不会生效
  • 直接调用同步sleep()会阻塞discord.py的异步事件循环,且没有使用异步休眠的正确写法await asyncio.sleep()
  • 缺少循环逻辑,状态只能执行单次赋值不会重复切换

修复后可运行代码

import discord
import asyncio

# 新版discord.py需要显式声明意图,v1.x版本可删除intents参数
client = discord.Client(intents=discord.Intents.default())

# 把所有要循环的状态提前放到列表里,后续加状态直接改这里就行
activity_list = [
    discord.Activity(name="Todos os membros da Cyber$ell.", type=discord.ActivityType.watching),
    discord.Activity(name="Cyber$ell o MELHOR discord de vendas do 🇧🇷", type=discord.ActivityType.watching),
    discord.Activity(name="Cyber$ell 😳Promoções😳 em  BREVE?!", type=discord.ActivityType.watching),
    discord.Activity(name="Já descobriu oque vai comprar?, Cria o seu ticket então.", type=discord.ActivityType.watching)
]

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    # 登录完成后启动状态循环
    while True:
        for activity in activity_list:
            await client.change_presence(activity=activity) # 官方提供的修改状态方法
            await asyncio.sleep(60) # 异步休眠60秒,不会阻塞机器人其他功能运行

token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
client.run(token)

补充说明

  • 切换间隔可以通过修改asyncio.sleep()的参数调整,单位为秒
  • 后续要新增状态直接往activity_list列表里加对应Activity对象即可,不需要修改循环逻辑

内容的提问来源于stack exchange,提问作者coding is a hell lol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:24:04