[英]Non-case sensitive replacement for indexOf()
我正在為我使用的網站制作聊天機器人。 我正在添加禁止的單詞列表。 我已經讓它工作到某些用戶不允許發布鏈接的地方。 這是代碼。
if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) {
if (isOwner || isStaff || user === "user") {}
else if (!isSub) {
moderation.timeout(name, 5);
channel.sendMessage(name + ", only subs can post links.");
}
所以我所做的幾乎與以上內容重復,但沒有用戶限制並添加了新單詞。 這是代碼。
if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) {
if (isOwner || isStaff || user === "user") {}
else if (!isSub) {
moderation.timeout(name, 5);
channel.sendMessage(name + ", only subs can post links.");
}
}
if (text.indexOf("word1") > -1 || text.indexOf("word2") > -1 || text.indexOf("word3") > -1) {
moderation.timeout(name, 5);
channel.sendMessage(name + ", please don't be rude.");
}
鏈接刪除工作完全正常。 我不喜歡這個indexof
對於單詞ban list是區分大小寫的。 使用不區分大小寫的函數有更好的方法嗎?
您需要規范化兩個字符串的大小寫,然后執行indexOf
。
function indexOfCaseInsenstive(a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
return a.indexOf(b);
}
創建單詞列表,為其創建正則表達式並針對傳入消息測試正則表達式:
const forbiddenWords = ['http://', 'word1', 'word2'];
const regexp = new RegExp(forbiddenWords.join('|'), 'i');
if(regexp.test(message)) {
// you have a forbidden message.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.