#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
атрибутов, у вас возникает эта ошибка.