Ошибка при изменении цвета роли discord.py

Я решил сделать автоматическое изменение цвета роли. Написал следующий код:

import discord
from discord.ext import commands
import asyncio
  
bot = commands.Bot(command_prefix = "g/")
bot.remove_command("help")

@bot.event 
async def on_ready(): 
 server = bot.get_server("807653017611534336") 
 return server 

async def runtime_background_task(): 
 colours = [0xFF0000, 0x00FF00, 0x0000FF0] 
 i = 0 
 server = await on_ready() 
 role = discord.utils.get(server.roles, name="RGB-Tag") 
 while not bot.is_closed: 
  i = (i + 1) % 3 
  await bot.edit_role(server=server, role=role, colour=discord.Colour(colours[i])) 
  await asyncio.sleep(5)
bot.loop.create_task(runtime_background_task())

bot.run("SECRET-TOKEN")

В итоге выходит ошибка:

Ignoring exception in on_ready
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "/storage/emulated/0/colorol.py", line 13, in on_ready
    server = bot.get_server("807653017611534336")
AttributeError: 'Bot' object has no attribute 'get_server'

Пожалуйста, помогите исправить.


Ответы (1 шт):

Автор решения: denisnumb

discord-py не имеет метода get_server.

Для получения объекта сервера используйте bot.get_guild(id)


В get_guild() параметр id передается в виде числа int, а не строки str

Замените

server = await on_ready() 

на

server = bot.get_guild(807653017611534336) 
→ Ссылка