机器人没有响应前缀

时间:2019-11-17 14:06:56

标签: javascript node.js discord discord.js

好的,所以我刚刚决定制作一个全新的机器人。最后一个是越野车,许多功能无法正常工作。我认为我会写得更聪明,但是到目前为止,效果还不是很好。我什至无法超越我的第一个命令:(

所以我有这个代码:

const Discord = require('discord.js');
const bot = new Discord.Client();
const client = new Discord.Client();
const token = "<my token>"

const prefix = 'cb!';

bot.on('message', message => {

    let msg = message.content.toUpperCase();
    let sender = message.author;
    let cont = message.content.slice(prefix.length).split(" ");
    let args = cont.slice(1);
// Commands
    // Ping
    if (msg === prefix + 'PING') {
         message.channel.send('Ping!');
    }

bot.on('ready', () => {
    console.log(`running`)

});


bot.login(token);

我的命令不适用于prefix + "ping"prefix + purge。 我的前缀是用const cb! = prefix定义的。我也尝试过let prefix = cb!

如果我将ping代码设为:if (msg === 'PING',它将起作用。因此,我知道该机器人正在运行,只是没有响应prefix + 'PING',或者至少是我认为。 那我该怎么办?

一如既往,感谢您抽出宝贵的时间阅读此消息。

2 个答案:

答案 0 :(得分:0)

当有人编写消息(例如cb!ping)时,节点将其保存到变量中并将其更改为大写。然后,节点将变量与prefix + 'PING'进行比较,最后得到CB!PING == cb!PING,它返回false,因此将let msg = message.content.toUpperCase();更改为let msg = message.content.toLowerCase();。示例:

const Discord = require('discord.js');
const bot = new Discord.Client();
const client = new Discord.Client();
const token = "<my token>"

const prefix = 'cb!';

bot.on('message', message => {

    let msg = message.content.toLowerCase();
    let sender = message.author;
    let cont = message.content.slice(prefix.length).split(" ");
    let args = cont.slice(1);
// Commands
    // Ping
    if (msg === prefix + 'PING') {
         message.channel.send('Ping!');
    }

bot.on('ready', () => {
    console.log(`running`)

});


bot.login(token);

答案 1 :(得分:0)

===的两面都转换为相同的大小写

您正在处理.toUpperCase().toLowerCase()

如果要以不区分大小写的方式比较字符串,则必须将===的两边都转换为小写或大写

// lowercase
if (msg.toLowerCase() === (prefix + "ping").toLowerCase()) {
  /* do stuff */
};

// UPPERCASE
if (msg.toUpperCase() === (prefix + "ping").toUpperCase()) {
  /* do stuff */
};

注意:

  • 无论您选择哪种方式,都要与该决定保持一致,以免再发生这种情况。
  • 声明变量时也可以保持一致。如果要使用大写字母,则应将杂音声明为大写字母const prefix = "CB!";