You need to enable JavaScript to run this app. Discord.py 如何实现用户修改昵称时立即自动重置该昵称?
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py 如何实现用户修改昵称时立即自动重置该昵称?

Discord机器人昵称自动重置实现方案(基于discord.py v2.x)

你推测的client.event装饰器确实是正确的实现路径,核心是监听成员信息更新事件,完整实现方案如下:

前置准备

  • 前往Discord开发者平台的对应机器人管理页,在「Bot」选项卡下开启Server Members Intent(成员意图),否则无法捕获成员信息更新事件
  • 给机器人在目标服务器授予管理昵称权限,且机器人的角色层级要高于所有你需要管控昵称的用户的角色层级(无法重置权限高于自己的用户、服务器所有者的昵称)

核心实现代码

import discord
from discord.ext import commands

# 声明需要的意图
intents = discord.Intents.default()
intents.members = True # 启用成员意图,必须和后台设置对应

client = commands.Bot(command_prefix='!', intents=intents)

@client.event
async def on_ready():
    print(f'机器人已登录为 {client.user}')

@client.event
async def on_member_update(before: discord.Member, after: discord.Member):
    # 仅在昵称发生修改时触发逻辑
    if before.nick != after.nick:
        try:
            # 重置为修改前的昵称,若要固定为某个昵称直接替换引号内内容即可,清空昵称设为None
            await after.edit(nick=before.nick, reason="自动重置用户修改的昵称")
        except discord.Forbidden:
            # 没有权限修改该用户昵称时的异常处理
            print(f"无权限重置用户 {after.name} 的昵称")

client.run('你的机器人Token')

自定义调整说明

  • 如果要固定所有用户的昵称为统一格式,把nick=before.nick替换为你需要的固定值即可,比如nick="匿名用户"
  • 如果需要排除特定角色/特定用户的昵称重置限制,可在判断before.nick != after.nick后加额外的权限判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:27:04