如何让 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 - 如何实现前缀以避免错误触发命令响应?
discord.js 如何在不提及已记录用户的情况下记录用户名以供将来使用?
如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息