如何修改Discord Bot代码实现仅允许纯"ew"消息留存?
解决纯"ew"消息留存的问题
你的问题出在使用了includes()方法——它只要检测到字符串里包含"ew"子串就会返回true,所以像"eww"、"aew"这类带额外内容的消息也会被错误留存。要实现仅纯"ew"消息留存,我们需要做严格的内容匹配,而不是子串检测。
直接用严格相等运算符!==来判断消息内容是否完全等于"ew"就可以了,修改后的代码如下:
bot.on('message', function(message) { // 只有当消息内容严格是"ew"时才不删除,否则删除非机器人消息 if (message.content !== "ew") { if (!message.author.bot) { message.delete(); } } });
额外优化:处理不小心输入的空格
如果担心用户输入时不小心带了前后空白(比如" ew "或者"ew\n"),可以先用trim()去除消息内容的前后空白再判断,这样更人性化:
bot.on('message', function(message) { // 去除前后空白后严格等于"ew"才留存 if (message.content.trim() !== "ew") { if (!message.author.bot) { message.delete(); } } });
这样一来,只有完全符合要求的纯"ew"(或去除空白后为"ew")的消息会被保留,其他所有非机器人发送的消息都会被删除,完美符合你的需求。
内容的提问来源于stack exchange,提问作者Brandon
相关产品推荐
相关产品推荐

