开发者问题收集

如何向特定的 discord 频道发送消息?

2018-11-08
5368

您好,我刚刚开始创建一个 discord 机器人。我有从在线教程中复制的代码,当我在任何地方的 discord 服务器上输入 !play 时,机器人会说 “@everyone 我们正在玩!:)”

我希望它能够以某种方式工作,这样当我在机器人频道中输入 !play 时,它会向 looking-for-game 频道 发送消息。我将粘贴我的整个代码,但我认为重要的部分是:

bot.sendMessage({
  to: channelID,
  message: '@everyone The Owner, Admins and The OGs are playing Mass Effect Andromeda! Come play with them! :smiley:'
});

有没有办法让它发送到特定频道而不是 channelID
如果解决方案需要它,这里是整个代码。

var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
  colorize: true
});
logger.level = 'debug';
// Initialize Discord Bot
var bot = new Discord.Client({
  token: auth.token,
  autorun: true
});
bot.on('ready', function(evt) {
  logger.info('Connected');
  logger.info('Logged in as: ');
  logger.info(bot.username + ' - (' + bot.id + ')');
});
bot.on('message', function(user, userID, channelID, message, evt) {
  // Our bot needs to know if it will execute a command
  // It will listen for messages that will start with `!`
  if (message.substring(0, 1) == '!') {
    var args = message.substring(1).split(' ');
    var cmd = args[0];

    args = args.splice(1);
    switch (cmd) {
      // !play
      case 'play':
        bot.sendMessage({
          to: channelID,
          message: '@everyone The Owner, Admins and The OGs are playing Mass Effect Andromeda! Come play with them! :smiley:'

        });
        break;
        // Just add any case commands if you want to..
    }
  }
});
2个回答

您必须获取公会对象,然后从中获取频道对象,然后向其发送消息。

如果是触发此操作的命令,并且您在 bot.on("message")

中,则可以执行 message.channel.send("Message") 如果在 !command 上您希望它发送到特定频道,则可以执行 message.guild.channel.get("CHANNEL-ID").send("Message");

您还可以执行 message.guild.channel.find("name", "channel-name").send("Message"); 虽然通常不这样做,但最好通过 ID 查找

如果不是,您必须执行以下操作:

bot.guilds.get('GUILD-ID').channels.get('CHANNEL-ID').send("Message");
Tom Martin
2018-11-08

在PHP中,您可以这样做:

989395049
Myosotis
2021-12-02