Отслеживание имен гильдий и идентификаторов гильдий во внедрениях

#python #discord #discord.py #discord.py-rewrite

#python #Discord #discord.py

Вопрос:

У меня есть этот код:

   logging_channel=client.get_channel(776924690291097621)
  embed = discord.Embed(
    title = 'Command Used',
    description = f"""
    User's Id: {ctx.author.id}
    User's Name: {ctx.author.name}
    Command: !help
    Guild Name: {discord.Message.guild}
    Guild Id: {discord.Message.guild_id} """,
    colour = discord.Colour.purple()
    )
  embed.set_footer(text = "Support Server")
  embed.set_author(name = "") 
  await logging_channel.send(embed=embed)
  

Предполагается, что он отправляет вложение с идентификатором автора, именем автора, командой, именем гильдии и идентификатором гильдии. Однако, когда я запускаю это, я получаю эту ошибку:

 Command raised an exception: AttributeError: type object 'Message' has no attribute 'guild_id'
  

Когда я удаляю ‘discord.Message.guild_id’ часть, он просто отправляет:

Гильдия:Объект CachedSlotProperty в 0x7fbea504e430> как часть встраивания.

Как мне это исправить и что означает ошибка?

Комментарии:

1. Если вы удалили guild_id, он возвращает информацию, соответствующую сообщению. Какие ключи существуют в сообщении? При поиске api discordpy.readthedocs.io/en/latest/api.html#message вы можете видеть, что хотели бы сделать: discord.Message.guild.id . Я думаю, что объект guild может использовать функцию str для отображения имени?

Ответ №1:

Вы можете получить доступ к гильдии name и id к своему Context объекту, поскольку у него есть guild атрибут :

 logging_channel=client.get_channel(776924690291097621)
embed = discord.Embed(
    title = 'Command Used',
    description = f"""
    User's Id: {ctx.author.id}
    User's Name: {ctx.author.name}
    Command: !help
    Guild Name: {ctx.guild.name}
    Guild Id: {ctx.guild.id} """,
    colour = discord.Colour.purple()
)
embed.set_footer(text = "Support Server")
embed.set_author(name = "") 
await logging_channel.send(embed=embed)
  

Вместо этого вы создавали пробел discord.Message , и поскольку discord.Message объекты не имеют никаких guild_id атрибутов, у вас возникает эта ошибка.