如何编写Python脚本让Discord Bot为我分配服务器角色?
实现Discord Bot分配角色的Python脚本
第一步:安装依赖
先确保你安装了discord.py库,在终端执行:
pip install discord.py
第二步:编写核心脚本
下面是完整的可运行代码,包含权限检查和角色分配逻辑:
import discord from discord.ext import commands # 启用必要的网关权限(必须设置,否则无法获取成员信息) intents = discord.Intents.default() intents.members = True # 初始化Bot,命令前缀设为! bot = commands.Bot(command_prefix='!', intents=intents) # Bot上线提示 @bot.event async def on_ready(): print(f'Bot已登录:{bot.user.name}(ID:{bot.user.id})') print('------------------------') # 分配角色的命令 @bot.command() async def assignrole(ctx, member: discord.Member, role: discord.Role): # 检查Bot是否有管理角色的权限 if not ctx.guild.me.guild_permissions.manage_roles: await ctx.send("我没有管理角色的权限,请检查我的权限设置!") return # 检查目标角色等级是否低于Bot的最高角色(Discord限制:不能分配比自己角色高的权限) if role >= ctx.guild.me.top_role: await ctx.send("我没办法分配比我自身角色等级更高的角色,请调整角色顺序!") return # 执行角色分配 await member.add_roles(role) await ctx.send(f'已成功给 {member.mention} 分配「{role.name}」角色') # 替换成你自己的Bot Token(从Discord开发者平台获取) bot.run('你的Bot唯一Token')
关键注意事项
- 启用Privileged Intents:登录Discord开发者平台,进入你的Bot页面,在「Privileged Gateway Intents」下开启「Server Members Intent」,否则脚本无法获取成员对象。
- 角色位置调整:在服务器的角色设置里,把Bot的角色拖到要分配的角色上方,否则Discord会阻止Bot分配高等级角色。
- 命令使用:Bot上线后,在服务器聊天框输入
!assignrole @目标成员 @目标角色就能触发分配操作。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

