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

如何用discord.py开发Discord角色分配机器人 Replit代码运行异常

问题修复方案

你的代码无法运行主要有几个核心原因,对应修复方式如下:

常见故障点排查

  • 网关意图未配置:discord.py 1.5版本之后要求显式声明网关意图才能读取消息内容、获取服务器成员信息,你同时需要在Discord开发者后台开启对应特权意图
  • 机器人权限不足:机器人的角色层级必须高于Recruiter角色,且拥有「管理角色」权限,否则无法完成角色分配操作
  • 角色匹配失败:需确认服务器内存在名称完全为Recruiter的角色,大小写、符号、空格都需完全一致

修复步骤

  1. 打开Discord开发者平台的你的Bot应用配置页,进入「Bot」分类,找到「Privileged Gateway Intents」板块,开启Server Members Intent和Message Content Intent两个开关
  2. 替换原有代码为下方修正后的版本
  3. 进入你的Discord服务器设置→角色列表,将机器人对应的角色拖动到Recruiter角色的上方,保存后确认机器人角色拥有「管理角色」权限

修正后完整代码

import os
import discord
from discord.utils import get

# 声明所需网关意图
intents = discord.Intents.default()
intents.members = True
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print ("We have logged in as {0.user}".format(client))

@client.event
async def on_message(message):
    # 过滤机器人自己发送的消息,避免循环触发
    if message.author.bot:
        return
    if message.content == ";":
        member = message.author
        role = get(member.guild.roles, name="Recruiter")
        # 增加角色存在判断,避免角色不存在时报错
        if role:
            await member.add_roles(role)
        else:
            await message.channel.send("未找到Recruiter角色,请检查配置")

client.run(os.getenv("TOKEN"))

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:09:02