discord.py Получить причину запрета забаненного пользователя

#python #discord.py

Вопрос:

Я создал бота Discord с использованием Python, который будет иметь простые команды, такие как «удар», «запрет», «отключение звука», «предупреждение» и т.д. Я также хочу добавить команды «список предупреждений» и «список запретов».

Я могу получить всех забаненных пользователей с помощью кода ниже:

 bans = await client.get_bans(message.guild.id)
for user in bans:
    print(f"User: {user.name} | User ID: {user.id}")
 

Но в Discord причина запрета также сохраняется при запрете участника:

введите описание изображения здесь

Как я могу получить причину запрета от запрещенного пользователя? Я не смог найти ничего, связанного с этим в discord.py документация.

Ответ №1:

Вместо client.get_bans() используйте guild.bans(). Найти причину также просто. Полезная информация: https://discordpy.readthedocs.io/en/stable/api.html?выделите=запреты#раздор.БанЕнтри

Вот мой код:

 bans = await message.guild.bans() #Getting a list of all ban entries
for ban_entry in bans: #Looping through all entries
   user = ban_entry.user #Getting user
   reason = ban_entry.reason #Getting Reason
 

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

1. Спасибо вам за ваш ответ и пример!

Ответ №2:

Вы можете использовать метод bans ().

await guild.bans() => Он возвращает > BanEntry объект. И этот объект содержит два свойства: Причина и Пользователь.

Ответ №3:

какую версию библиотеки вы используете?

client.get_bans() возвращает список guild.Ban , который действительно поставляется с user и reason :

     def get_bans(self, guild_id: Snowflake) -> Response[List[guild.Ban]]:
        return self.request(Route('GET', '/guilds/{guild_id}/bans', guild_id=guild_id))
 
 class Ban(TypedDict):
    reason: Optional[str]
    user: User
 

видишь https://github.com/Rapptz/discord.py/blob/45d498c1b76deaf3b394d17ccf56112fa691d160/discord/http.py#L1119

так что, может быть, что-то вроде

 bans = await client.get_bans(message.guild.id)
for ban in bans:
    user = ban['user']
    reason = ban['reason']
 

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

1. client.get_bans() устарел (