{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 шт):
Проблема:
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))
Результат:
