нерабочий change_presence | discord.py
Проблема проста: при попытке использования change_presence в конце on_event метода выдаёт следующую ошибку:
Ignoring exception in on_ready
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 46, in on_ready
await bot.change_presence(activity=discord.Streaming("YouTube: Alan Bolton"))
TypeError: __init__() takes 1 positional argument but 2 were given
Вот код on_event:
@bot.event # работает всегда
async def on_ready():
while True:
rand = randint(0, 4)
if rand == 0:
await bot.change_presence(activity=discord.Game("Отдыхает на Дубаях")) # Задаём игровой статус
sleep(15)
elif rand == 1:
await bot.change_presence(activity=discord.Game("Глючит как всегда"))
sleep(15)
elif rand == 2:
await bot.change_presence(activity=discord.Game("Думает как уничтожить человечество"))
sleep(15)
elif rand == 3:
await bot.change_presence(activity=discord.Game("yeet"))
sleep(15)
elif rand == 4:
await bot.change_presence(activity=discord.Streaming("YouTube: Alan Bolton"))
sleep(15)
Ответы (3 шт):
Автор решения: Stalono
→ Ссылка
Попробуй использовать это:
await bot.change_presence(activity=discord.Streaming(name="My Stream", url="stream url"))
Автор решения: Alan Bolton
→ Ссылка
2021-12-16 11:15:22,662:DEBUG:discord.gateway: Sending "{"op":3,"d":{"game":{"type":0,"name":"yeet","timestamps":{}},"afk":false,"since":0.0,"status":"online"}}" to change status
2021-12-16 11:15:22,662:DEBUG:discord.client: Dispatching event socket_raw_send
2021-12-16 11:15:31,587:WARNING:discord.gateway: Shard ID None heartbeat blocked for more than 150 seconds.
Loop thread traceback (most recent call last):
File "main.py", line 173, in <module>
bot.run(token) # Обращаемся к словарю .env с ключом token, для получения токена
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 713, in run
loop.run_forever()
File "/usr/lib/python3.8/asyncio/base_events.py", line 570, in run_forever
self._run_once()
File "/usr/lib/python3.8/asyncio/base_events.py", line 1859, in _run_once
handle._run()
File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 44, in on_ready
sleep(15)
Автор решения: Stalono
→ Ссылка
Думаю, дело в while True:
Т.к. какой смысл от бесконечного цикла?
Если ты его уберешь, то бот будет менять статус каждый раз, когда ты запускаешь бота.