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

如何实现Discord bot将频道内用户消息自动转发到其他频道

Discord Bot 跨频道原样同步消息实现方案

核心逻辑是监听平台的消息创建事件,过滤无效消息后将内容、附件等信息转发到预设目标频道,以下是可直接复用的实现方案:

前置权限配置

  • 给Bot分配源频道的「查看频道」「读取消息历史」权限
  • 给Bot分配目标频道的「发送消息」「发送附件」「嵌入链接」权限
  • 去开发者后台开启Bot的「消息内容特权意图」,否则无法读取普通用户发送的消息文本

代码实现(以discord.py v2版本为例)

注意:必须过滤Bot自身发送的消息,否则会触发消息无限循环转发的刷屏bug

import discord
from discord.ext import commands

# 替换为你自己的频道ID
SOURCE_CHANNEL_ID = 替换为源频道的数字ID
TARGET_CHANNEL_ID = 替换为目标频道的数字ID

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f"Bot登录成功,账号:{bot.user}")

@bot.event
async def on_message(message):
    # 跳过所有Bot发送的消息,避免循环
    if message.author.bot:
        return
    # 只处理指定源频道的消息
    if message.channel.id != SOURCE_CHANNEL_ID:
        return
    
    target_channel = bot.get_channel(TARGET_CHANNEL_ID)
    if not target_channel:
        return
    
    # 原样处理消息附带的图片、文件等附件
    forward_files = []
    for att in message.attachments:
        forward_files.append(await att.to_file())
    
    # 如果需要完全纯内容转发,直接传message.content即可;下面示例是附带原发送者昵称的格式
    forward_content = f"{message.author.display_name}:\n{message.content}"
    await target_channel.send(content=forward_content, files=forward_files)

    # 如果你的Bot有其他指令功能,保留这行,否则可以删掉
    await bot.process_commands(message)

bot.run("替换为你自己的Bot Token")

扩展说明

  • 如果你用discord.js等其他SDK,逻辑完全一致:监听messageCreate事件,做相同的过滤规则后调用目标频道的发送接口即可
  • 如果需要同步消息的编辑、删除状态,额外监听消息编辑、消息删除事件,存一份「原消息ID-转发后消息ID」的映射表,找到目标频道对应的转发消息做修改/删除操作即可
  • 如果需要支持多组频道的同步映射,把写死的ID换成配置文件或者数据库存储的映射关系即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:54:27