使 Discord.js 命令不区分大小写

Making Discord.js commands case insensitive

所以我做了一个 Discord 机器人,我有很多命令。不断出现的一个问题是,对于具有自动大写功能的移动用户,机器人将无法识别该消息。我找到的关于这个主题的所有教程都在 Discord.js 的另一个版本中。如何使用 .toLowerCase() 使所有命令不区分大小写?

'use strict';

/**
 * A ping pong bot, whenever you send "ping", it replies "pong".
 */

// Import the discord.js module
const Discord = require('discord.js');

// Create an instance of a Discord client
const client = new Discord.Client();

/**
 * The ready event is vital, it means that only _after_ this will your bot start reacting to information
 * received from Discord
 */
client.on('ready', () => {
  console.log('I am ready!');
});

// Create an event listener for messages
client.on('message', message => {
  // If the message is "ping"
  if (message.content.toLowerCase().startsWith("ping")) {
    // Send "pong" to the same channel
    message.channel.send('pong');
  }
});

// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

相关行:

if (message.content.toLowerCase().startsWith("ping")) {

您可以使用 String.prototype.toLowerCase(),其中 return 将调用字符串值转换为小写。

例如,如果您在以下字符串上使用 String.prototype.toLowerCase(),它将 return:

hello world --> hello world

hElLo WoRlD --> hello world

... -> ...

你在message.content上使用它,因为它是一个字符串,将它转换为小写,然后检查内容是否等于你的命令。

这是一个例子:

client.on("message", message => {
    /**
     * Any message like the following will pass the if statement:
     * -testcommand
     * -TeStCoMMaND
     * -TESTCOMMAND
     * etc...
     */
    if (message.content.toLowerCase() == "-testcommand") {
        message.reply(`This is a test command.`);
    }
});