首页 > 解决方案 > 如何使用 discord.js 将发布在不同服务器上的消息转发给我?

问题描述

我正在我的服务器上创建一个机器人,我只需要一些关于如何做或者是否可能的指导。

bot 功能是将发布在不同服务器上的消息复制并发布到我自己的服务器上。请记住,该机器人仅在我的服务器上。

下面的代码将消息从文本通道转发到我自己服务器中的另一个文本通道。主要目标是将来自不同服务器的消息转发到我的。

const Discord = require('discord.js');
const client = new Discord.Client();
const token = 'ODA3MjAyOD456ODE3NzU2Njcz.4GFDFHA.8MHQ9ZaGSFFFEDSJZQSgv-wB84'; //fake token

client.once('ready', () => {
    console.log('The bot is online!');
});

client.on('message', message => {
  if (message.channel.type != 'text' || message.author.bot || !message.content.startsWith('*'))
    return;

  if (message.content === '*pp') {
    let channel = client.channels.cache.get('80565937858574763'); // gets the message from this channel

    channel.messages.fetch({ limit: 1 }).then(messages => { 
        let lastMessage = channel.lastMessage.content;
        const marketnews = client.channels.cache.get('807577438839489436096'); //sends it to this text channel
        marketnews.send(lastMessage);
    })
  }

});
client.login(token);

免责声明:频道 ID 和令牌是示例而非真实的。

标签: node.jsdiscord.js

解决方案


这很简单,如果消息公会 ID 不是您的服务器 ID,那么它会将带有信息的消息发送到您的服务器文本通道。

client.on("message", async (message) => { //Message Event
   if (message.guild.id != "YOUR GUILD ID") { //If Guild ID Is Not Your Guild ID
     const Channel = client.channels.cache.get("GUILD LOG MESSAGE CHANNEL ID"); //Finding Log Channel With ID
     if (!Channel) return console.log("No Channel Found To Log!"); //If No Channel
     const Embed = new Discord.MessageEmbed() //New Embed
     .setColor("RANDOM") //Setting Color
     .setTitle("New Message") //Setting Title
     .setDescription(`Author - ${message.author.username} (${message.author.id})\nGuild - ${message.guild.name} (${message.guild.id})\nMessage -\n${message.content}`) //Description
     .setTimestamp(); //Timestamp
     return Channel.send(Embed); //Sending Embed To Channel
  };
});

链接:
Guild#id
MessageEmbed


推荐阅读