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

Posted

技术标签:

【中文标题】如何让 discord.js 机器人在不包含前缀和命令名称的情况下重复用户的消息?【英文标题】:How to make a discord.js bot repeat a user's message without including the prefix and command name? 【发布时间】:2020-02-22 09:07:48 【问题描述】:

好吧,这很可能有一个非常简单的答案,但我在网上找不到同样的东西,而且我无法靠自己的想法弄清楚。

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

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 短语)。

【问题讨论】:

【参考方案1】:

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

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

我不敢相信我不记得世界更早更换,但就是这样,它有效。

【讨论】:

【参考方案2】:
case 'say':
   const usermsg = message.content.split(' ');
   message.channel.send(usermsg.slice(0).join(' '));
break;

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

【讨论】:

【参考方案3】:
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', ''))

        
    

【讨论】:

以上是关于如何让 discord.js 机器人在不包含前缀和命令名称的情况下重复用户的消息?的主要内容,如果未能解决你的问题,请参考以下文章

如果消息以前缀 + 使用 discord.js 的命令开头,如何使 if 语句起作用

discord.js 说命令帮助 meeee

Discord.js - 如何实现前缀以避免错误触发命令响应?

Discord.js 中的多个前缀

discord.js 如何在不提及已记录用户的情况下记录用户名以供将来使用?

如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息