Skip to content

图片回复

图片回复是本机器人特色之一, 可以准确识别图片, 并作出有效回复

当玩家在群内发送关于登录器、客户端等错误截图,机器人会自动识别并回复解决方案,识别准确率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("神圣的石头")
}