discord.py AttributeError: объект 'Embed' не имеет атрибута 'get' - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь повторно отправить вставку из идентификатора сообщения, это мой код

@commands.command()
async def test(self, ctx, messageID: int):
    channel = self.client.get_channel(740951313482907748)
    
    message = await channel.fetch_message(messageID)
    embed = message.embeds[0]
    embed = discord.Embed.from_dict(embed)
    await ctx.send(embed=embed)

Каждый раз, когда я запускаю его, появляется эта ошибка:

Ignoring exception in command take:
Traceback (most recent call last):
  File "C:\Users\kwiecinski\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:\Users\kwiecinski\Desktop\test_bot\cogs\channels.py", line 61, in take
    embed = discord.Embed.from_dict(embedfrommessage)
  File "C:\Users\kwiecinski\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\embeds.py", line 147, in from_dict
    self.title = data.get('title', EmptyEmbed)
AttributeError: 'Embed' object has no attribute 'get'
print(type(embed))
>>> <class 'discord.embeds.Embed'>

Как мне избавиться от этой ошибки?

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Вы пытаетесь создать закладку из уже существующей закладной. Удалите

embed = discord.Embed.from_dict(embed)

и все будет в порядке

1 голос
/ 06 августа 2020

Проблема в том, что вы пытаетесь получить вложение из вложения. Таким образом, эта строка (вызывающая ошибку) должна быть удалена: embed = discord.Embed.from_dict(embed).

Причина возникновения ошибки. Разве что у объекта embed нет атрибута 'get'. Что можно легко проверить, просмотрев документацию к встраиваемому объекту , там просто нет атрибута с именем «get».

@commands.command()
async def test(self, ctx, messageID: int):
    channel = self.client.get_channel(740951313482907748)

    message = await channel.fetch_message(messageID)
    embed = message.embeds[0] # this line returns an embed
    await ctx.send(embed=embed)
...