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

Discord Bot 管理员私信自动转发至服务器频道功能咨询

Discord Bot 私信转发功能实现方案

完全可以实现该需求,整体逻辑复杂度不高,核心分为权限校验、私信事件监听、消息转发三个模块,具体实现思路和示例如下:

核心实现思路

  • 第一步:基础配置准备
    首先在Discord Developer Portal创建Bot应用,开启Privileged Gateway Intents下的Message Content Intent和Direct Messages Intent权限,否则Bot无法读取私信内容、无法触发私信相关事件。提前记录好三个核心配置参数:目标服务器ID、消息转发的目标频道ID、Bot的访问令牌,新手测试阶段可以直接硬编码参数,生产环境建议写入环境变量避免泄露。
  • 第二步:管理员权限校验
    有两种常用校验方案,可根据需求选择:
    • 固定名单校验:提前录入所有需要放行的管理员用户ID,收到私信时直接比对发件人ID是否在白名单内,适合管理员人员固定的小型服务器,配置简单性能更高
    • 动态权限校验:收到私信后实时拉取发件人在目标服务器的成员信息,校验该用户是否持有Administrator权限,适合管理员经常变动的中大型服务器,无需手动更新白名单
  • 第三步:私信监听与转发逻辑
    给Bot绑定私信消息事件,收到消息后首先过滤Bot自身发送的消息避免循环触发,再走上述权限校验流程,校验通过后将消息内容、附件等信息转发到指定频道,可附带发送者用户名、ID、发送时间等信息方便追溯,也可配置给管理员回复确认消息告知转发成功。

最简实现示例(基于discord.py v2.x)

import discord
from discord.ext import commands

# 核心配置项,替换为自己的实际参数
TARGET_GUILD_ID = 1234567890  # 目标服务器ID
TARGET_CHANNEL_ID = 123456789012345678  # 目标转发频道ID
BOT_TOKEN = "YOUR_BOT_TOKEN"  # Bot令牌

# 开启所需的网关意图
intents = discord.Intents.default()
intents.message_content = True
intents.dm_messages = True

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

@bot.event
async def on_message(message):
    # 过滤Bot自身发送的消息
    if message.author == bot.user:
        return
    
    # 判断当前消息是否为私信
    if isinstance(message.channel, discord.DMChannel):
        # 获取目标服务器实例
        guild = bot.get_guild(TARGET_GUILD_ID)
        if not guild:
            return
        
        # 获取发件人在目标服务器的成员实例
        member = guild.get_member(message.author.id)
        if not member:
            return
        
        # 校验是否为服务器管理员
        if member.guild_permissions.administrator:
            target_channel = guild.get_channel(TARGET_CHANNEL_ID)
            if target_channel:
                # 构造转发内容
                forward_text = f"""
收到管理员 {message.author.mention}(ID:`{message.author.id}`)的私信:
{message.content}
                """
                # 同步转发私信附件
                attach_files = [await att.to_file() for att in message.attachments]
                await target_channel.send(forward_text, files=attach_files)
                # 可选:给发送私信的管理员回复确认
                await message.channel.send("消息已成功转发至指定服务器频道")

bot.run(BOT_TOKEN)

注意:首次使用前需要将Bot邀请进目标服务器,邀请时需要给Bot授予查看服务器成员、发送消息、上传附件权限,否则会出现权限不足导致的运行报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:36:03