为了账号安全,请及时绑定邮箱和手机立即绑定

使用audit_log条目取消禁止不在特定服务器上工作的目标用户-discord.py

使用audit_log条目取消禁止不在特定服务器上工作的目标用户-discord.py

繁花不似锦 2023-07-11 14:32:48
@bot.command()async def unban(ctx, id: int):    user = await bot.fetch_user(id)    async for entry in ctx.message.guild.audit_logs(limit=None, user=user, action=discord.AuditLogAction.ban):        await ctx.guild.unban(entry.target)        print("Unbanned ", entry.target, entry.target.id, "Banned by ", entry.user, "Entry ID: ", entry.id)编写上面的函数是为了获取用户 ID,并将其传递给audit_logs() 以获取该用户禁令的所有审核日志条目。然后我尝试使用入口目标发出 unban() 。当我在我的私人服务器上测试它时,这是有效的。我邀请了一堆机器人,自己禁止了一些机器人,然后用一个机器人禁止了其他机器人。我使用自己的用户 ID 运行该命令,BattleNubBot 仅取消了我已禁止的用户。我认为我修改的服务器的管理员可以邀请我的机器人查看审核日志并禁止权限,然后我们在那里尝试了该命令。我们得到:忽略命令 unban 中的异常:Traceback (most recent call last):  File "C:\Users\Joey\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped    ret = await coro(*args, **kwargs)  File ".\BattleNubBot.py", line 21, in unban    await ctx.guild.unban(entry.target)  File "C:\Users\Joey\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\guild.py", line 1892, in unban    await self._state.http.unban(user.id, self.id, reason=reason)  File "C:\Users\Joey\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\http.py", line 243, in request    raise NotFound(r, data)discord.errors.NotFound: 404 Not Found (error code: 10026): Unknown Ban
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我不知道为什么要audit_logs取消会员封禁,有更好的方法吗


@client.command()

async def unban(ctx, member):

    banned_users = await ctx.guild.bans()

    member_name, member_discriminator = member.split("#")

    for banned_member in banned_users:

        user = banned_member.user

        if (user.name, user.discriminator) == (member_name, member_discriminator):

            await ctx.guild.unban(user)

如果您只想执行取消禁止命令,这将起作用。你可以像这样使用它.unban someone#1234。


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信