使用Discord.py编写的Discord服务器解封命令无响应该如何解决?
修复方案
存在的问题
- 缩进错误:遍历封禁列表的
for循环定义在unban异步函数外部,函数执行时不会触发这段逻辑 - 参数类型异常:被封禁用户不属于当前服务器成员,
discord.Member类型注解无法完成转换,直接触发参数校验失败导致无响应 - 错误调用封禁条目属性:
discord.guild.Ban实例的对应用户属性为user,而非你写的banned_users - 打印日志笔误:日志内容写的是
Successfully banned,和实际执行的解封操作不符
修复后代码
@client.command() @commands.has_permissions(ban_members = True) async def unban(ctx, *, member : str): banned_users = await ctx.guild.bans() member_name, member_discriminator = member.split('#') for ban_entry in banned_users: user = ban_entry.user if (user.name, user.discriminator) == (member_name, member_discriminator): await ctx.guild.unban(user) embed=discord.Embed(title=" ✅ *Sucessfully unbanned* @" + user.name + '#' + user.discriminator, color=0x00ff4b) await ctx.send(embed=embed) print(f'[LOGS] Successfully unbanned @{user.name}#{user.discriminator}')
使用说明
调用命令时按命令前缀unban 用户名#识别码格式输入即可,示例:!unban 测试用户#1234
内容的提问来源于stack exchange,提问作者Mohamed Khettab
相关产品推荐
相关产品推荐

