基于"gotcha"封禁原因批量解封Discord成员的Discord.py需求
修改Discord.py批量解封命令,仅处理封禁原因为"gotcha"的成员
以下是修改后的massunban命令代码,会自动筛选封禁原因匹配"gotcha"的成员,解封后将这些成员的昵称/ID发送到执行命令的频道:
import discord from discord.ext import commands @commands.command(name="massunban") @commands.has_permissions(administrator=True) async def massunban(ctx): guild = ctx.guild unbanned_members = [] # 获取服务器所有封禁记录 async for ban_entry in guild.bans(): # 筛选封禁原因为"gotcha"的成员,若需忽略大小写可改为ban_entry.reason and ban_entry.reason.lower() == "gotcha" if ban_entry.reason == "gotcha": await guild.unban(ban_entry.user) # 优先记录昵称,无昵称则用用户ID member_info = ban_entry.user.display_name if ban_entry.user.display_name else str(ban_entry.user.id) unbanned_members.append(member_info) # 发送解封结果到命令执行频道 if unbanned_members: await ctx.send(f"已成功解封以下成员(封禁原因:gotcha):\n{', '.join(unbanned_members)}") else: await ctx.send("没有找到封禁原因为'gotcha'的成员。")
关键修改说明:
- 新增封禁原因筛选逻辑:通过
ban_entry.reason == "gotcha"精准匹配目标封禁记录,若要兼容大小写差异,可调整为ban_entry.reason and ban_entry.reason.lower() == "gotcha",避免reason为None时触发报错 - 增加解封反馈:收集每个解封成员的昵称或ID,批量汇总后发送到命令执行频道,方便管理员确认操作结果
- 保留权限验证:仅允许服务器管理员执行该命令,避免误操作
内容的提问来源于stack exchange,提问作者biell '
相关产品推荐
相关产品推荐

