#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
так что, может быть, что-то вроде
bans = await client.get_bans(message.guild.id)
for ban in bans:
user = ban['user']
reason = ban['reason']
Комментарии:
1.
client.get_bans()
устарел (