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

Discord工单机器人发送消息时如何@提及Mods与Admins管理员?

Discord 工单机器人@提醒功能修复方案

原代码存在的问题

  • 事件回调内误用未定义的ctx变量,on_message传入的上下文对象是msg,直接用ctx会触发命名错误
  • 硬写@Mods @Admins不会触发真实的@提醒,需要调用Discord角色对象的mention属性生成可提及格式
  • 新版discord.py默认关闭消息内容读取权限,未开启对应意图会导致无法识别消息内容
  • 未添加process_commands调用,后续编写的前缀命令会全部失效
  • 没有判断消息所在服务器,私信场景下会触发空对象报错

修正后的可运行代码

import discord
from discord.ext import commands

# 开启消息内容读取意图
intents = discord.Intents.default()
intents.message_content = True
intents.members = True # 如需获取成员/角色信息需要开启

client = commands.Bot(command_prefix="+", intents=intents)

# 配置项
# 替换为你服务器内Mods、Admins角色的实际ID,可在Discord开启开发者模式后右键复制
MOD_ROLE_ID = 123456789012345678 # 示例ID,替换为实际值
ADMIN_ROLE_ID = 876543210987654321 # 示例ID,替换为实际值
# 工单触发匹配的关键词/频道ID,按你的需求调整
TICKET_TRIGGER = ["915745817694961664"]

@client.event
async def on_ready():
    print("Bot is online")

@client.event
async def on_message(msg):
    # 跳过机器人自己发的消息,避免循环触发
    if msg.author.bot:
        return
    # 只处理服务器内的消息,跳过私信
    if not msg.guild:
        return
    
    # 匹配触发规则
    for trigger in TICKET_TRIGGER:
        if trigger in msg.content:
            # 获取角色对象
            mod_role = msg.guild.get_role(MOD_ROLE_ID)
            admin_role = msg.guild.get_role(ADMIN_ROLE_ID)
            if not mod_role or not admin_role:
                await msg.channel.send("提醒:未找到对应管理角色,请检查角色ID配置")
                return
            # 发送带@提醒的消息
            await msg.channel.send(f"有人创建了工单!{mod_role.mention} {admin_role.mention}")
            break # 匹配到就退出循环,避免重复发送
    
    # 保留命令处理逻辑
    await client.process_commands(msg)

client.run("替换为你的Bot TOKEN")

额外配置注意事项

  1. 你需要先在Discord开发者后台的Bot设置页,开启Message Content Intent和Server Members Intent两个开关,否则代码会报错
  2. 要确保机器人拥有对应频道的发送消息、提及角色的权限,否则@不会生效
  3. 如果你的触发逻辑是「工单频道内有新消息就提醒」,可以把匹配规则替换为if msg.channel.id in TICKET_TRIGGER,把TICKET_TRIGGER里存的字符串改为数字类型的频道ID即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:00