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

discord.py机器人如何实现@特定角色及消息发送者功能

Discord机器人实现@用户、@特定角色(触发ping通知)方案

你原有代码无法正常触发提及通知的核心原因:直接拼接"@角色名"、"@{用户ID}"格式的字符串,Discord不会识别为合法提及,自然不会发送ping通知,需要用官方封装的提及属性或标准提及格式。

核心实现规则

  • 提及发送指令的举报用户:直接调用用户对象的.mention属性,即ctx.author.mention,会自动生成Discord可识别的提及格式
  • 提及管理员角色:先获取到对应角色的对象,再调用角色对象的.mention属性即可;推荐用角色ID获取角色,不会因为角色改名导致功能失效
  • 所有需要@的内容可以放在同一条消息里发送,不需要拆分多条消息重复@

修正后的可运行代码

import discord
from discord.ext import commands
import asyncio
import random
import json

client = commands.Bot(command_prefix="!")

@client.command()
async def Report(ctx, member : discord.Member,*, reason = "no reason provided"):
    # 替换为你的管理员专属频道ID
    report_channel = client.get_channel(994788167699931206)
    # 替换括号内的数字为你服务器管理员角色的真实ID,比按名字找角色更稳定
    admin_role = ctx.guild.get_role(123456789012345678)
    
    # 单条消息完成@管理员、@举报人、说明举报内容
    await report_channel.send(
        f"{admin_role.mention} 收到新举报:\n"
        f"被举报用户:{member.mention}\n"
        f"举报人:{ctx.author.mention}\n"
        f"举报理由:{reason}"
    )

client.run("你的机器人TOKEN")

注意事项

  • 提前确认机器人在管理员专属频道拥有发送消息、提及@用户、提及@角色的权限
  • 如果管理员角色设置了「不允许任何人提及」,需要单独给机器人开通提及该角色的权限,否则无法触发ping
  • 不要直接发送"@Admin"这类纯文本,Discord不会对纯文本的@内容做通知触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:27