discord.py 获取被封禁用户的封禁原因

Posted

技术标签:

【中文标题】discord.py 获取被封禁用户的封禁原因【英文标题】:discord.py Get the ban reason of a banned user 【发布时间】:2021-11-08 06:25:51 【问题描述】:

我使用 Python 制作了一个 Discord 机器人,它具有简单的命令,如“kick”、“ban”、“mute”、“warn”等。我还想添加“list warns”和“list bans”命令。

我可以使用以下代码获取所有被禁止的用户:

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.Ban 的列表,userreason 附带:

    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']

【讨论】:

client.get_bans() 已过时 ( 【参考方案2】:

您可以使用bans() 方法。

await guild.bans() => 它返回BanEntry 对象。 而这个对象包含两个属性,分别是ReasonUser

【讨论】:

【参考方案3】:

使用 guild.bans() 代替 client.get_bans()。 找个理由也很简单。 有用信息:https://discordpy.readthedocs.io/en/stable/api.html?highlight=bans#discord.BanEntry

这是我的代码:

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

【讨论】:

感谢您的回答和示例!

以上是关于discord.py 获取被封禁用户的封禁原因的主要内容,如果未能解决你的问题,请参考以下文章

h5app网络不稳定导致ip被封禁一段时间

一度因举报被封禁下线!一份1300家公司的「上下班时间表」火了

推特被永久封禁怎么登入别人的账号

Figma 封禁大疆,接下来会不会是 Postman?

个人网站总被攻击?写个自动封禁IP的脚本给你!

“Oracle 封禁了我的账户”