一个响应后Discord机器人停止工作

时间:2020-06-14 11:17:04

标签: javascript bots discord

const Discord = require('discord.js');

const client = new Discord.Client();

const Prefix = '!';

client.once('ready', () => {
    console.log('Bot is online!');
});

client.once('message', message=>{

    let args = message.content.substring(Prefix.length).split(" ");

    switch(args[0]){
        case 'ping':
            message.channel.send('pong');
        break;
    };
})


client.login('[Token]');

当我对机器人说ping时,它会像我想要的那样显示pong,但是当我再次说它时,它不会以ping进行响应

2 个答案:

答案 0 :(得分:3)

我要说的是,您需要像client.on这样的代码而不是client.once。您也可以检查discord.js那里有一个关于此的简单示例。

我还建议您讨论代码的其他部分,但我建议使用.split(' ') .split(" "),但我认为这种情况不会有任何区别。

也许将所有消息都转换为小写会很有用,因为如果有人会打PING,则此命令将无效。

let command = args.shift().toLowerCase();

答案 1 :(得分:1)

除了以上client.on()的答案之外,我相信您也希望这样做:

  1. 您想使用前缀message.content.split(Prefix)进行拆分。
  2. 然后使用args[1]

(请注意,还有其他方法可以做到这一点。我对您的代码进行了最少的修改。)

const Discord = require('discord.js');

const client = new Discord.Client();

const Prefix = '!';

client.on('ready', () => {
    console.log('Bot is online!');
});

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

    let args = message.content.split(Prefix);

    switch(args[1]){
        case 'ping':
            message.channel.send('pong');
        break;
    };
})


client.login('[Token]');