Appearance
图片回复
图片回复是本机器人特色之一, 可以准确识别图片, 并作出有效回复
当玩家在群内发送关于登录器、客户端等错误截图,机器人会自动识别并回复解决方案,识别准确率95%,回复内容和错误截图可自定义调整
特别是端经常出现错误弹窗
注意
此功能不要自行摸索, 默认是关闭的, 首次使用, 都会远程教学的
截图
场景 1

场景 2

场景 3

场景 4

三转问题自动回复

查看原图

教学

视频教程 https://www.bilibili.com/video/BV1icxye3EXD/
模板
js
var 图片文本 = `
error code : -2147467261(无效指针)查着冒险岛ONIINE官方网站
`.trim()
var 回复 = `
如果出现 -21474672** 问题
win7系统,说明是分辨率或者显卡驱动的问题;
win8或者win10,请右键客户端文件夹里的<MapleStory.exe>点击属性-兼容性选择'win7'后是否解决
如果解决不了:
方法1:设置电脑分辨率接近800*600再运行登录器进游戏窗口化之后再调回推荐分辨率,如果分辨率选项里没有800*600 那么就从你的显卡驱动自定义分辨率到800*600,运行游戏后再调回来;
方法2:右键桌面-显示器设置-高级设置-调整监视器刷新频率,一般为60HZ。如果还不行,重启一次。
如果还不行,联系群主解决。
`.trim()
const ocrUtil = require('ocr-util')
function action(event) {
const threshold = ocrUtil.similarity(图片文本, event.image.text)
console.log('相似度' + threshold)
if(threshold > 0.6){
bot.sendGroup(event.groupId, bot.at(event.userId) + '\n' + 回复)
return false
}
return true
}
打印图片信息与过滤无效图片
js
function action(event) {
if (event.image.text) {
console.log(event.image.text)
return true
} else {
console.log('过滤一条无信息的图片')
return false
}
}
三转问题回答
js
const 三转问答 = [
{question: "问题1: 在魔法密林见不到的NPC是谁?", answer: "问题1: 在魔法密林见不到的NPC是谁? 答案: 露尔"},
{question: "问题1: 不是阿尔法队员的是谁?", answer: "问题1: 不是阿尔法队员的是谁? 答案: 比特中士"},
{question: "问题1: 被怪物攻击时特别的异常状态没有被正确说明的是哪一个?", answer: "问题1: 被怪物攻击时特别的异常状态没有被正确说明的是哪一个? 答案: 虚弱 — 移动速度降低"},
{question: "问题1: 冒险岛最初遇见的NPC是谁?", answer: "问题1: 冒险岛最初遇见的NPC是谁? 答案:希娜"},
{question: "问题1: 怪与所掉落战利品是正确对应的一组?", answer: "问题1: 怪与所掉落战利品是正确对应的一组? 答案: 蝙蝠-蝙蝠翅膀"},
{question: "问题2: 在神秘岛(天空之城)没有出现的怪物是哪一个?", answer: "问题2: 在神秘岛(天空之城)没有出现的怪物是哪一个? 答案: 黑鄂鱼"},
{question: "问题2: 在彩虹岛看不到的怪物是哪一个?", answer: "问题2: 在彩虹岛看不到的怪物是哪一个? 答案: 猪猪"},
{question: "问题2: 唤醒麦吉不需要的材料是哪一个?", answer: "问题2: 唤醒麦吉不需要的材料是哪一个? 答案: 妖精之翼"},
{question: "问题2: 在天空之城不能看到的NPC是哪一个?", answer: "问题2: 在天空之城不能看到的NPC是哪一个? 答案: 索非亚"},
{question: "问题2: 在金银岛的勇士部落不能看到的NPC是谁?", answer: "问题2: 在金银岛的勇士部落不能看到的NPC是谁? 答案: 易德"},
{question: "问题2: 冒险岛中从1级到2级升级所需经验是多少?", answer: "问题2: 冒险岛中从1级到2级升级所需经验是多少? 答案: 15"},
{question: "问题3: 绿蘑菇,木妖,蓝水灵,斧木妖,三眼章鱼中级别最高的怪物是哪一个?", answer: "问题3:绿蘑菇,木妖,蓝水灵,斧木妖,三眼章鱼中级别最高的怪物是哪一个? 答案: 斧木妖"},
{question: "问题3: 射手村的玛雅为了治好自己的病让你给她的物品是哪一个?", answer: "问题3:射手村的玛雅为了治好自己的病让你给她的物品是哪一个? 答案: 奇怪的药"},
{question: "问题3: 在金银岛的废弃都市不能见到的NPC是谁?", answer: "问题3: 在金银岛的废弃都市不能见到的NPC是谁? 答案: 鲁克"},
{question: "问题3: 要求级别最高的任务是哪一个?", answer: "问题3: 要求级别最高的任务是哪一个? 答案: 阿尔卡斯特和黑暗水晶"},
{question: "问题3: 在神秘岛冰峰雪域看不见的NPC是谁?", answer: "问题3: 在神秘岛冰峰雪域看不见的NPC是谁? 答案: 保姆"},
{question: "问题3: 在废弃都市能够见到一个离家的少年阿列克斯,他的父亲是谁?", answer: "问题3: 在废弃都市能够见到一个离家的少年阿列克斯,他的父亲是谁? 答案: 斯坦长老"},
{question: "问题4: 在冒险岛中登场的药和功效错误连线的是哪一个?", answer: "问题4: 在冒险岛中登场的药和功效错误连线的是哪一个? 答案: 清晨之露 - 恢复3000MP"},
{question: "问题4: 金银岛没有的村落?", answer: "问题4: 金银岛没有的村落? 答案: 彩虹村"},
{question: "问题4: 怪物和怪物爆出的物品不正确联系的是哪一个?", answer: "问题4: 怪物和怪物爆出的物品不正确联系的是哪一个? 答案: 食人花——食人花的叶子"},
{question: "问题4: 在金银岛的明珠港不能看到的NPC是谁?", answer: "问题4: 在金银岛的明珠港不能看到的NPC是谁? 答案: 赛恩"},
{question: "问题4: 下面哪个职业不是二转中出现的职业?", answer: "问题4: 下面哪个职业不是二转中出现的职业? 答案: 巫师"},
{question: "问题4: 为了进行次转职收集好30个黑玉后转职教官会给你的物品是什么?", answer: "问题4: 为了进行次转职收集好30个黑玉后转职教官会给你的物品是什么? 答案: 英雄证书"},
{question: "问题5: 跟宠物没有关系NPC是谁?", answer: "问题5: 跟宠物没有关系NPC是谁? 答案: 比休斯"},
{question: "问题5: 在金银岛和蚂蚁洞看不到的怪物是哪一个?", answer: "问题5: 在金银岛和蚂蚁洞看不到的怪物是哪一个? 答案: 石球"},
{question: "问题5: 下面中能飞行的怪物是什么?", answer: "问题5: 下面中能飞行的怪物是什么? 答案: 巫婆"},
{question: "问题5: 在冒险岛中登场的药和功效正确连线的是哪一个?", answer: "问题5: 在冒险岛中登场的药和功效正确连线的是哪一个? 答案: 披萨 — HP400恢复"},
{question: "问题5: 能够反复执行的任务是哪一个?", answer: "问题5: 能够反复执行的任务是哪一个? 答案: 艾温的玻璃鞋"},
{question: "问题5: 根据不同职业的第一次转职必须条件被正确叙述的是哪一个?", answer: "问题5: 下面中能飞行的怪物是什么? 答案: 弓箭手25敏捷"},
{question: "问题5: 下面中能飞行的怪物是什么?", answer: "问题5: 下面中能飞行的怪物是什么? 答案: 巫婆"}
]
const ocrUtil = require('ocr-util')
function action(event) {
const text = event.image.text
if (!handle(text)) {
return true
}
let 最大匹配度 = 0
let 本题答案 = ''
let 匹配度 = 0
for (let i = 0; i < 三转问答.length; i++) {
匹配度 = ocrUtil.similarity(三转问答[i].question, text)
if (匹配度 > 最大匹配度) {
本题答案 = 三转问答[i].answer
最大匹配度 = 匹配度
}
}
if (本题答案) {
bot.sendGroup(event.groupId, 本题答案)
}
return false
}
function handle(text) {
return text.includes("接受挑战吧") || text.includes("最后一个问题") || text.includes("测验开始") || text.includes("神圣的石头")
}