【问题标题】:Bots status changes to <itertools.cycle object at 0x03EA9488>机器人状态更改为 <itertools.cycle object at 0x03EA9488>
【发布时间】:2020-12-05 09:38:56
【问题描述】:

我正在尝试让我的机器人自动更改其不和谐状态,但它更改为 &lt;itertools.cycle object at 0x03EA9488&gt;

这一切都在一个齿轮中,没有状态更改代码,它工作得非常好。我没有收到任何错误。

这是我正在使用的代码:

import discord
from discord.ext import commands, tasks
from itertools import cycle

status = cycle(['status 1', 'status 2', 'status 3'])

class OnReady(commands.Cog):

    def __init__(self, client):
        self.client = client

    @tasks.loop(seconds=10)
    async def change_status(self):
        await self.client.change_presence(status=discord.Status.idle, activity=discord.Game(status))

    @commands.Cog.listener()
    async def on_ready(self):
        self.change_status.start()
        print('Bot is online.')

def setup(client):
    client.add_cog(OnReady(client))

感谢任何帮助。谢谢。

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    嗯,是的。您将状态变量设置为

    cycle(['status 1', 'status 2', 'status 3'])
    

    这是一个

    itertools.cycle object
    

    就像它说的那样。循环是一个无限的可迭代对象,其工作原理如下:

    >>> import itertools
    >>> c = itertools.cycle([1, 2, 3])
    >>> next(c)
    1
    >>> next(c)
    2
    >>> next(c)
    3
    >>> next(c)
    1
    

    我不知道discord.Game 是什么,但从上下文推断,您可能想将activity = discord.Game(status)(它以整个循环作为参数调用discord.Game)更改为activity = discord.Game(next(status))

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2020-11-06
      • 2021-01-11
      • 1970-01-01
      • 2021-07-29
      • 2020-11-24
      • 1970-01-01
      • 2020-03-19
      • 2018-12-31
      相关资源
      最近更新 更多