【问题标题】:Discord.js A bot That Say Something in a Channel user ChoosesDiscord.js 一个在用户选择的频道中说些什么的机器人
【发布时间】:2019-11-23 23:35:44
【问题描述】:

所以基本上我尝试编写一些代码,当用户在#general 中键入 .say “message”时,机器人会转到 #general 频道并说“message”

我尝试了很多次处理该代码,但我不知道如何为机器人分配一个通道以在其中说出消息

`bot.on('message', message => {
    const args = message.content.split(" ").slice(1);
    if(message.content.startsWith('.say')) {
        message.delete()
        var saytext = args.join(" ");
        message.channel.send(saytext)
    };
  } )`

因此,当我键入 .say 时,代码正在工作,无论后面是什么,机器人都会在用户说代码的频道中说出来,但我想要的是让机器人在另一个频道中发送消息,而不是同一个频道.我的意思是,如果服务器有#general 和#Music 并且用户在#general 中并且只是输入了.say I love music in #Music,机器人会说“我喜欢#Music 中的音乐”而不是“#中的“我喜欢音乐”音乐”。

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    您需要检索指定的频道,而不是使用 message.channel.send ,这会使机器人在发送消息的同一频道中回答。 为此,您可以使用message.mentions.channels 来检测您的命令中提到了哪些频道。

    这是一个示例,说明如何执行此操作。另请注意,在我的例子中,我使用如下命令使其工作:.say <#channel> <message>,这种语法比您要求的更容易解析。

    在您的情况下,您必须输入“.say #Music 我喜欢音乐”。在机器人可以访问的任何频道中。

    bot.on('message', message => {
      if (message.content.startsWith(".say")) {
          // Get the channel mention
          if (message.mentions.channels.size == 0) {
              message.reply("please mention a channel first.");
          }
          else {
              let targetChannel = message.mentions.channels.first();
              // Get the message to print
    
              const args = message.content.split(" ").slice(2);
              let saytext = args.join(" ");
              targetChannel.send(saytext);
              message.delete();
          }
    });
    

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 2021-03-14
      • 1970-01-01
      • 2021-11-05
      • 2023-04-10
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多