discord.py如何实现+scalper命令批量为指定用户添加角色
代码修改方案
原代码存在多个语法和逻辑问题,直接修改后的可运行版本如下:
from discord.ext.commands import MemberConverter, has_permissions @bot.command() @has_permissions(manage_roles=True) # 限制只有有管理角色权限的人能调用这个命令,不需要可以删掉这行 async def scalper(ctx, *, args): guild = ctx.guild converter = MemberConverter() role_id = 897682560119894036 role = guild.get_role(role_id) # 比通用get()方法调用更高效直接 if not role: await ctx.send("指定的角色不存在,请检查role_id是否正确") return # 按空格分割输入的用户名列表 username_list = args.split() success_count = 0 fail_count = 0 for username in username_list: try: member = await converter.convert(ctx, username) await member.add_roles(role) # 异步方法必须加await才能正常执行 success_count += 1 except Exception: fail_count += 1 continue await ctx.send(f"操作完成:成功给{success_count}个用户添加角色,{fail_count}个用户处理失败(可能是用户名不存在/Bot权限不足)")
使用方法
直接在频道输入命令即可,多个用户名用空格分隔:+scalper 用户名1 用户名2 用户名3
注意事项
- 需要确保Bot账号本身的角色权限等级高于你要分配的这个scalper角色,否则会添加失败
- 输入用户ID识别准确率比输入用户名更高,代码也支持直接识别ID
- 如果不需要限制命令调用权限,删除
@has_permissions(manage_roles=True)这一行即可
内容的提问来源于stack exchange,提问作者Toyu
相关产品推荐
相关产品推荐

