使用tmi.js开发Twitch机器人时如何检测用户是否已执行过指定命令
实现方案
你可以通过一个全局对象缓存每个用户的历史IQ结果,每次触发命令时先查询缓存判断是否是首次调用,再对应生成返回内容即可,修改后代码如下:
// 全局作用域声明,用于存储所有用户的上一次IQ结果 const userIqHistory = {}; if (message === '!iq') { const userName = user['display-name']; const currentIq = Math.floor(Math.random() * 200) + 1; let replyText = `${userName} Your IQ is ${currentIq}`; // 检查用户是否有历史记录 if (userIqHistory[userName] !== undefined) { const diff = currentIq - userIqHistory[userName]; // 差值为正自动加+号,负数自带符号 replyText += ` (${diff > 0 ? '+' : ''}${diff})`; } // 更新缓存里的用户最新IQ值 userIqHistory[userName] = currentIq; client.action('jimmytag', replyText); }
补充说明
- 如果担心用户修改昵称导致记录错乱,可以替换
user['display-name']为Twitch用户唯一的ID字段(通常是user['user-id'],具体看你使用的机器人SDK返回字段定义) - 如果服务重启后需要保留历史记录,可以把缓存对象的数据持久化存储到本地文件或数据库中
内容的提问来源于stack exchange,提问作者Maroun
相关产品推荐
相关产品推荐

