🦈드림 걸 Gemoy ~ Info AraBotz
🦈드림 걸 Gemoy ~ Info AraBotz
February 2, 2025 at 10:33 PM
/* *Update* Didyoumean * Tanpa *similarity*, *didyoumean* dari npm * Kemaren masih pake similarity soalnya * Ini lebih mirip sih barusan nyoba, gabud aja * Mampir vapisz.web.app */ const fs = require('fs') if (command) { let c_names = getCaseNames() const s_threshold = 0.6 function getCaseNames() { try { const data = fs.readFileSync('case.js', 'utf8') // Sesuaikan nama file case koe const c_pattern = /case\s+'([^']+)'/g const matches = data.match(c_pattern) return matches ? matches.map(match => match.replace(/case\s+'([^']+)'/, '$1')) : [] } catch (err) { return [] } } function levenshtein(a, b) { const m = a.length, n = b.length if (m === 0) return n if (n === 0) return m let dp = Array.from({ length: m+1 }, () => Array(n+1).fill(0)) for (let i = 0; i <= m; i++) dp[i][0] = i for (let j = 0; j <= n; j++) dp[0][j] = j for (let i = 1; i <= m; i++) { for (let j = 1; j <= n; j++) { let cost = a[i - 1] === b[j - 1] ? 0 : 1 dp[i][j] = Math.min(dp[i - 1][j]+1, dp[i][j - 1]+1, dp[i - 1][j - 1]+cost) } } return dp[m][n] } function similarity(a, b) { let m_length = Math.max(a.length, b.length) if (m_length === 0) return 1 return (m_length - levenshtein(a, b)) / m_length } let b_match = '' let h_similarity = 0 for (const c_name of c_names) { let sim = similarity(command.toLowerCase(), c_name.toLowerCase()) let lengthDiff = Math.abs(command.length - c_name.length) if (sim > h_similarity && lengthDiff <= 1) { h_similarity = sim b_match = c_name } } let s_percentage = parseInt(h_similarity * 100) if (h_similarity >= s_threshold && command.toLowerCase() !== b_match.toLowerCase()) { let response = `Maaf, command yang kamu berikan salah. Mungkin ini yang kamu maksud:\n\n•> ${prefix+b_match}\n•> Kemiripan: ${s_percentage}%` m.reply(response) } } // Taruh sebelum switch (command)

Comments