好的,所以我刚刚决定制作一个全新的机器人。最后一个是越野车,许多功能无法正常工作。我认为我会写得更聪明,但是到目前为止,效果还不是很好。我什至无法超越我的第一个命令:(
所以我有这个代码:
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'
,或者至少是我认为。
那我该怎么办?
一如既往,感谢您抽出宝贵的时间阅读此消息。
答案 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!";