如何使discord.js机器人在不包含前缀和命令名称的情况下重复用户的消息?

时间:2019-10-26 05:11:45

标签: discord.js

好的,这很可能是一个非常简单的答案,但是我在网上找不到同样的东西,也无法根据自己的想法解决。

所以在用于响应前缀的参数中,我有这个:

case 'say':
   const usermsg = message.content
   message.channel.send(usermsg)
break;

因为它是全部内容,所以它也会发出c!say响应,然后触发自身。但是触发不是问题,我希望消息中不包含c!say。 (我知道我不需要const,我只是想在单独的一行中尝试不同组合的东西)

更新:

因此,我找到了使用参数部分的第二种方法,如下所示:

        case 'say':
                message.channel.send(args[1])
                message.delete(1)
            break;

所以这符合我的要求,但仅适用于第二个参数,这意味着它不能使用超过1个单词。因此,我目前的想法是从message.content中减去args [0](c!say短语)。

3 个答案:

答案 0 :(得分:0)

找到了解决该问题的方法,而不是发送参数或减去文本,而是使用了replace命令。

            case 'say':
                let saymsg = message.content
                message.channel.send(saymsg.replace("c!say",""))
                message.delete(1)
            break;

我不敢相信我不记得这个世界会早日取代,但这就是它,它起作用了。

答案 1 :(得分:0)

case 'say':
   const usermsg = message.content.split(' ');
   message.channel.send(usermsg.slice(0).join(' '));
break;

此代码将吸收完整的用户字符串,切出第一个参数(命令和前缀),然后加入其余消息并通过聊天发送。

答案 2 :(得分:0)

bot.on('message', message => {    
    var sender = message.author;
    var msg = message.content.toUpperCase();
    var prefix = '>';
    var cont = message.content.slice(prefix.length).split(" ");
    var args = cont.slice(1);

    for (x = 0; x < profanities.length; x++) {

        if (message.content.toUpperCase == profanities[x].toUpperCase()) {
            message.channel.send('Hey! Don\'t say that');
            message.delete();
            return;
        }
     
    if (msg.startsWith(prefix + 'SAY')) {

        message.delete();
        var saymsg = message.content;
        message.channel.send(saymsg.replace(prefix + 'say', ''))

        }
    }
}