Help on function fetch_member in module discord.guild:
async fetch_member(self, member_id)
Guild - класс, и вы пытаетесь вызвать его метод. Посмотрите в сторону ООП в питоне.
Кратко: Классы - типы объектов, Объекты - определённые объекты указанного типа
class Horse: # тип - лошадь
...
def send_to_space(self, encapsulate: bool):
# Функция позволяющая отправить лошадь в космос
self.move(Place("Space"))
special_horse_in_vacuum = Horse(...) # Один определенный сферический конь
special_horse_in_vacuum.send_to_space(True) # Отправляем определенного коня в вакуум
special_horse_in_vacuum = Horse # Определение лошади
special_horse_in_vacuum.send_to_space(True) # Пытаемся отправить определение "лошадь" в космос
# Получаем TypeError: send_to_space() missing 1 required positional argument: 'encapsulate'
Вы пытаетесь взять слово "Сервер", и получить конкретного участника из определения "Сервер", не конкретного сервера.
Вам необходимо получать сервер из контекста:
https://discordpy.readthedocs.io/en/stable/ext/com...
@bot.command()
async def test(ctx, member_id: int):
print(await ctx.guild.fetch_member(member_id)) # Получить пользователя через API
print(ctx.guild.get_member(member_id)) # Получить пользователя из кэша бота
Но в данном случае всё может быть намного проще, не нужно изобретать велосипед, достаточно разок почитать документацию
, а не устаревшие туториалы (привет pass_context):
https://discordpy.readthedocs.io/en/stable/ext/com...
В discord.py существует понятие "конвертеры", которые значительно упрощают написание команд:
@bot.command()
async def info(ctx, *, member: discord.Member):
await ctx.send(f"Вас называют: {member.display_name}. Ваш ID: {member.id}. etc...")
Это, к слову, позволит вызывать команду не только по упоминанию пользователя, но и по его никнейму, ID, и полному тегу:
https://discordpy.readthedocs.io/en/stable/ext/com...
Получать объект пользователя (User) нет смысла в данном случае, так как класс Member все методы класса User путём наследования.