You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:54:04