{member.name} AttributeError: module 'discord.member' has no attribute 'name'

пытаюсь сделать рандомные сообщения при входе человека на сервер с помощью утилиты random в discord.py, но это почему-то не работает.

я пытаюсь сделать так:

randomwelcome = [
             f"Это птица? Это самолёт? Нет, это {member.name}!",
             f"Привет, {member.name}!"]

но жалуется на {member.name} я попробовал вписать такой импорт:

from discord import member

результата не дало. помогите, пожалуйста


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

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

Проблема:

f-строка используется только в тех случаях, когда у вас уже есть готовые данные в подставляемой переменной.

В данном случае, судя по всему, member нигде не объявляется до момента использования в списке randomwelcome.

Этим импортом вы импортируете не класс участника, а только файл, содержащий класс-шаблон. Поэтому вы видите ошибку о том, что member не содержит определения name, потому что name - это свойство класса discord.Member, а вы импортировали файл member.py из директории с библиотекой.

from discord import member

Названия классов в discord-py указываются с большой буквы, но и этот импорт вам ничего не даст, так как вы импортируете не какого-то конкретного участника сервера, а только шаблон, в который позже подставляются данные реального участника.

from discord import Member

Решение:

Уберите f-строки из списка и вместо member напишите 0

randomwelcome = [
             "Это птица? Это самолёт? Нет, это {0.name}!",
             "Привет, {0.name}!"]

Тогда в выбранную строку можно будет подставить member при помощи .format(member):

@bot.command()
async def test(ctx):
    await ctx.send(random.choice(randomwelcome).format(ctx.author))

Результат:

введите сюда описание изображения

→ Ссылка