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

如何用Discord.py实现机器人发送指定消息及自定义目标角色功能

修改Discord.py机器人实现指定角色推送自定义消息

你的现有代码存在几个问题:

  • word变量在使用后才定义,会触发NameError
  • 无法接收指令发起者输入的消息和指定角色
  • 缺少权限校验和异常处理,容易报错

下面是修改后的完整代码,实现指定角色+自定义消息的推送功能:

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

@bot.command(name="send_role_msg")
@commands.has_permissions(administrator=True)  # 仅管理员可使用,避免滥用
async def send_role_msg(ctx, target_role: discord.Role, *, message_content: str):
    # 遍历机器人加入的所有服务器
    for guild in bot.guilds:
        # 在当前服务器中查找目标角色
        role = discord.utils.find(lambda r: r.name == target_role.name, guild.roles)
        if not role:
            await ctx.send(f"服务器 {guild.name} 中未找到角色 {target_role.name}")
            continue
        
        # 给拥有该角色的成员发送私信
        sent_count = 0
        failed_count = 0
        for member in guild.members:
            if role in member.roles:
                try:
                    await member.send(message_content)
                    sent_count += 1
                except discord.Forbidden:
                    failed_count += 1
                    print(f"无法给 {member.name} 发送消息:无权限")
                except Exception as e:
                    failed_count += 1
                    print(f"给 {member.name} 发送消息时出错:{str(e)}")
        
        # 反馈当前服务器的发送结果
        await ctx.send(f"服务器 {guild.name} 推送完成:成功 {sent_count} 人,失败 {failed_count} 人")

bot.run("你的机器人Token")

关键改动说明

  • 指令参数设计:
    • target_role: discord.Role:支持用户直接@目标角色,或输入角色名称,Discord.py会自动解析为角色对象
    • *, message_content: str:*表示接收指令后剩余的所有文本作为消息内容,支持带空格的长消息
  • 权限控制:添加@commands.has_permissions(administrator=True),限制仅管理员可使用该指令,防止恶意滥用
  • 异常处理:捕获Forbidden(无权限发私信)等异常,避免机器人崩溃,并记录失败情况
  • 结果反馈:给指令发起者返回每个服务器的推送统计,方便查看执行情况
  • 变量逻辑修正:先获取用户输入的消息内容,再执行发送操作,解决原代码的变量未定义问题

使用示例

在Discord聊天中输入:

!send_role_msg @新成员 欢迎加入服务器!请查看公告频道的规则。

机器人会遍历所有加入的服务器,找到名为“新成员”的角色,给所有拥有该角色的成员发送指定消息,并反馈每个服务器的推送结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:13