@GroznyDev

Что делать если не отправляется embed сообщение?

код:
@bot.event
async def on_member_join(member):
    channel = bot.get_channel(channelID)

    randomMember = random.choice(joinMember)

    embed = discord.Embed(
        description = f'Пользователь ``{member}`` наткнулся на наш сервер', 
        colour = discord.Color.red()
        )
    embed.set_image(url = randomMember)
    await channel.send(embed=embed)

@bot.event
async def on_member_remove(member):
    channel = bot.get_channel(channelID)

    memberRemove = random.choice(removeMember)

    embed = discord.Embed(
        description = f'Пользователь ``{member}`` покинул наш сервер',
         colour = discord.Color.red()
         )
    embed.set_image(url= memberRemove)
    await channel.send(embed=embed)

    embed = discord.Embed(
        description = f' ``{member}`` Жаль что вы покинули наш сервер :(', 
        colour = discord.Color.red()
        )
    embed.set_image(url= memberRemove)
    await member.send(embed=embed)


ошибка:
[2023-11-13 17:49:55] [ERROR   ] discord.client: Ignoring exception in on_member_remove
Traceback (most recent call last):
  File "C:\Users\daniel\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 441, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\daniel\Documents\Project\Grozny_bot\main.py", line 155, in on_member_remove
    await channel.send(embed=embed)
AttributeError: 'NoneType' object has no attribute 'send'
[2023-11-13 17:49:59] [ERROR   ] discord.client: Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:\Users\daniel\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 441, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\daniel\Documents\Project\Grozny_bot\main.py", line 142, in on_member_join
    await channel.send(embed=embed)
AttributeError: 'NoneType' object has no attribute 'send'


я понимаю что ошибка в await channel.send(embed=embed), но не могу исправить.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Открываем документацию, находим get_channel
get_channel(id, /)
Returns a channel or thread with the given ID.
Parameters
id (int) – The ID to search for.
Returns
The returned channel or None if not found.

Если канал не найден возвращается None, это ваш случай.

Хардкодить канал не очень хорошая задумка. У любого сервера для уведомлений предусмотрен отдельный канал , который можно достать из guild.system_channel. Вот в него и стоит отправлять уведомления.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 мая 2024, в 10:38
50000 руб./за проект
24 мая 2024, в 10:22
11000 руб./за проект
24 мая 2024, в 10:21
5000 руб./за проект