#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я пытаюсь заставить моего бота автоматически изменить свой статус discord, но он меняется на <itertools.cycle object at 0x03EA9488>
Это все в шестеренке, и без кода изменения статуса все работает отлично. Я не получаю никаких ошибок.
Это код, который я использую:
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))
Любая помощь приветствуется. Спасибо тебе.
Ответ №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))
.