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

Disnake开发的Discord机器人重启后原生角色名称恢复,如何通过代码设置原生角色名称?

Disnake开发的Discord机器人重启后原生角色名称恢复,如何通过代码设置原生角色名称?

嘿,我完全懂你遇到的麻烦——每次重启机器人后,那个和机器人同名的原生角色总会自动变回原来的名字,之前手动修改的结果全白费了对吧?别担心,咱们可以通过Disnake的代码让机器人启动后自动把这个原生角色改成你想要的名称,彻底解决这个问题。

解决思路

核心逻辑很简单:等机器人启动完成后,找到它在服务器里的原生角色(就是那个默认和机器人同名的角色),然后调用API修改它的名称。咱们可以把这个操作放在机器人的on_ready事件里,确保每次启动都会执行。

代码实现

下面是完整的示例代码,你可以直接套用,只需要修改几个参数即可:

import disnake
from disnake.ext import commands

# 初始化机器人,记得开启所有必要的意图
bot = commands.Bot(command_prefix="!", intents=disnake.Intents.all())

# -------------------------- 自定义参数 --------------------------
TARGET_ROLE_NAME = "你的机器人专属角色名"  # 改成你想要的角色名称
# 如果只针对特定服务器修改,就取消下面这行注释并填入服务器ID
# TARGET_GUILD_ID = 123456789012345678
# ----------------------------------------------------------------

@bot.event
async def on_ready():
    print(f"机器人已登录:{bot.user}")
    # 遍历机器人加入的所有服务器
    for guild in bot.guilds:
        # 如果指定了目标服务器,就跳过其他服务器
        if 'TARGET_GUILD_ID' in locals() and guild.id != TARGET_GUILD_ID:
            continue
        
        # 获取机器人在当前服务器的成员对象
        bot_member = guild.me
        # 找到原生角色:名称和机器人用户名一致的那个角色
        native_role = next((role for role in bot_member.roles if role.name == bot.user.name), None)
        
        if native_role:
            try:
                # 修改角色名称
                await native_role.edit(name=TARGET_ROLE_NAME)
                print(f"✅ 已将服务器「{guild.name}」的原生角色修改为「{TARGET_ROLE_NAME}」")
            except disnake.Forbidden:
                print(f"❌ 权限不足,无法修改服务器「{guild.name}」的角色,请确保机器人有「管理角色」权限")
            except Exception as e:
                print(f"❌ 修改服务器「{guild.name}」角色时出错:{str(e)}")
        else:
            print(f"⚠️ 在服务器「{guild.name}」中未找到与机器人同名的原生角色")

# 运行机器人,替换成你的机器人令牌
bot.run("你的机器人令牌")

关键注意事项

  1. 权限要求:机器人必须拥有「管理角色」的权限,否则无法修改角色名称。你可以在邀请机器人时勾选这个权限,或者在服务器的角色设置中给机器人的角色分配该权限。
  2. 意图设置:要确保在Discord开发者面板中开启了「Server Members Intent」(服务器成员意图),否则机器人无法获取自己的角色信息。
  3. 服务器范围:如果你的机器人加入了多个服务器,而你只想修改特定服务器的角色,就取消代码中TARGET_GUILD_ID的注释,填入目标服务器的ID即可。

这样一来,每次机器人重启后,都会自动把原生角色改成你指定的名称,再也不用手动修改啦!

备注:内容来源于stack exchange,提问作者Sergey Atroshkin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 07:04:32