微信机器人源码 520Bot微信定时情话,群自动回复nodejs

技术:

nodejs ,微信公共包,机器人接口

环境

windows, 微信账号

功能说明

帮助屌丝找到妹纸。帮助情侣。夫妻。异地恋。日月恋增加和谐

-功能介绍:-

-(群内回复前面加520如:520广州天气)。 1天气:发送FS如:广州天气。 2笑话:FS:笑话、讲个笑话。 3情话:FS:情话、讲个情话。 4周公解梦:FS:发大水。(关键字 520周公发大水) 4垃圾分类FS:男朋友是什么垃圾。 5名人名言FS:名言、名人名言。 6绕口令FS:绕口令。 7歇后语FS:歇后语。 8顺口溜FS:顺口溜。 …15等等-

内置限制

防止渣男多发。只能为一个人主动定时发送情话等

难度

没学过电脑都都可以用

-前提-

-申请注册机器人-

-免责申明-

-本项目属于个人兴趣开发,请勿使用此项目做违反微信规定或者其他违法事情。 建议使用小号进行测试,有被微信封禁网页端登录权限的风险(客户端不受影响),请确保自愿使用。因为个人使用不当导致网页端登录权限被封禁,均与作者无关,谢谢理解。-

微信如何实现自动回复java auto.js微信自动回复脚本_nodejs

微信如何实现自动回复java auto.js微信自动回复脚本_前端_02

微信如何实现自动回复java auto.js微信自动回复脚本_微信机器人_03


微信如何实现自动回复java auto.js微信自动回复脚本_nodejs_04

使用步骤 1 申请机器人 https://www.tianapi.com 把 config/index.js 里的APIKEY 替换成 你申请的秘钥 (在 重置API密匙 可找到你的秘钥)

2 安装nodejs https://www.runoob.com/nodejs/nodejs-install-setup.html

3 powershell 找到安装的目录 命令牢记 npm install
npm run start

Ctrl+C 之后点Y 为取消关闭

更新说明: 20190709:基础版520情话 天气 定时推送 聊天 垃圾分类

20190710: 自动回复每个好友。昵称加备注模式定时发送。文字优化

2019071201:新增群触发相关功能 设置白名单群等 1群关键字可配置触发聊天及其他接口 2群周公解梦接口开发触发

2019071202:私聊屏蔽NBot开头的人。

代码

/**
• 520musWechatBot
• https://github.com/cao919/ */
const { Wechaty, Friendship } = require(‘wechaty’)
 //const schedule1 = ‘http://www.520mus.com/index.js’;
 const schedule = require(‘./schedule/index’)const config = require(‘./config/index’)
 const untils = require(‘./untils/index’)
 const superagent = require(‘./superagent/index’)// 延时函数,防止检测出类似机器人行为操作
 const delay = ms => new Promise(resolve => setTimeout(resolve, ms));// 二维码生成
 function onScan(qrcode, status) {
 require(‘qrcode-terminal’).generate(qrcode) // 在console端显示二维码
 const qrcodeImageUrl = [
 ‘https://api.qrserver.com/v1/create-qr-code/?data=’,
 encodeURIComponent(qrcode),
 ].join(‘’)
 console.log(qrcodeImageUrl)
 }// 登录
 async function onLogin(user) {
 console.log(贴心小助理${user}登录了)
 if (config.AUTOREPLY) {
 console.log(已开启机器人自动聊天模式)
 }
 // 登陆后创建定时任务
 await initDay6()
 //11点
 await initDay11()
 //1 这家伙通宵了吧
 await initDay1()}
//登出
 function onLogout(user) {
 console.log(小助手${user} 已经登出)
 }// 监听对话
 async function onMessage(msg) {
 const contact = msg.from() // 发消息人
const content = msg.text().trim() //消息内容
const room = msg.room() //是否是群消息

const alias = await contact.alias() // 发消息人备注 
const contactname = await contact.name()                //

const contactfriend = await contact.friend()                //昵称
const isText = msg.type() === bot.Message.Type.Text
const contacttype =contact.type() //发消息人类型 2好像是公告号 1 是人
const contactgender =await contact.gender() //发消息人性别

//if (msg.self()) {
//    console.log('跳过:',contact.name())
//    return
//}
if (config.AUTOREPLYroom&&room &&isText) { // 如果是群消息
    const topic = await room.topic()
    // const mentionSelf= await msg.mentionSelf()
    //const roomfrom = msg.room().from() //是否是群消息&&mentionSelf
    if(config.AUTOREPLYPERSONSroom.indexOf(topic)>-1)  //指定多个好友群开启机器人聊天功能
    {
        if (msg.self()&& config.AUTOREPLYroomself) {
            console.log('跳过:',contact.name())
            return
        }
        else{ 
            console.log(`群名: ${topic} 发消息人: ${contact.name()} 内容: ${content}`)
            let  strroomtemp =  content.substr(0,config.AUTOREPLYroomBakNAMElenth)  //截至为520 
            //功能2个关键字
            //   let  strroomtempgongnengkey2 =  strroomtemp.substr(2,3)

            //周公解梦 getzhougongjiemengType
            let strstr = config.AUTOREPLYroomBakNAMElenth+'__'+ strroomtemp+'@'+config.AUTOREPLYroomBakNAME
            console.log('1'+strstr+'2'+topic+'3'+contact+'4'+strroomtemp+'5'+content.substr(3,2)) //
            if(strroomtemp==config.AUTOREPLYroomBakNAME&&content&&strroomtemp&&content.substr(3,2)=='周公') 
            { 
                let contactContent = content.replace('520周公','') 
                let replyroom = await superagent.getzhougongjiemengType(contactContent)  
                let str520MUSroom= '❤520mus.com:'+replyroom
                try {
                    await delay(2000) 
                    await room.say(str520MUSroom)
                } catch (e) {
                    console.error(e)
                }
            }
             
            else if(strroomtemp==config.AUTOREPLYroomBakNAME&&content){
                let replyroom = await superagent.getReply(content)  
                let str520MUSroom= '❤520mus.com:'+replyroom
                try {
                    await delay(2000) 
                    await room.say(str520MUSroom)
                } catch (e) {
                    console.error(e)
                } 
            } 
            else if(content.substr(0,config.AUTOREPLYroomBakNAMElenth)==config.AUTOREPLYroomBakNAME&&content)
            { 
                let contactContent = content.replace('520','')
                let replyroom = await superagent.getReply(contactContent)  
                let str520MUSroom= '❤520mus.com:'+replyroom
                try {
                    await delay(2000) 
                    await room.say(str520MUSroom)
                } catch (e) {
                    console.error(e)
                }
            }
        }
    }
      
}else if(isText&&contacttype==1){ // 如果非群消息 目前只处理文字消息 1为人
    
    // console.log(`类型: ${contact}`)  
    // let reply = contacttype
    // console.log('类型', reply)
    //console.log(`处理1发消息人昵称: ${contactname} 发消息人备注: ${alias} 消息内容: ${content}`)
    if(content.substr(0,1)=='?'||content.substr(0,1)=='?'){
        let contactContent = content.replace('?','').replace('?','')
        if(contactContent){ 
            console.log(`处理2发消息人昵称: ${contactname} 发消息人备注: ${alias} 消息内容: ${content}`)
            let res = await superagent.getRubbishType(contactContent)
            await delay(2000)
            await contact.say(res)
        }
    } 
    //跳过黑名单备注名开头的 
    //else  if(config.AUTOREPLY&&(config.AUTOREPLYPERSONS.indexOf(contactname)>-1||config.AUTOREPLYPERSONS.indexOf(alias)>-1))
   else  if(config.AUTOREPLY&&contactfriend&&!config.AUTOREPLYPERSONSblacks==contact.name().substr(0,4) &&!AUTOREPLYPERSONSblack.indexOf(contactname)>-1)
    {
        if (msg.self()) {
            console.log('跳过:',contact.name())
            return
        }
        else{

            console.log(`处理3发消息人昵称: ${contactname} 发消息人备注: ${alias} 消息内容: ${content}`)
            // 如果开启自动聊天且已经指定了智能聊天的对象才开启机器人聊天,
            //不对老婆大人开启自动聊天。机器人会聊死的
            //if (content&&alias!='A朵老婆大人'&&alias!='春天的脚步') { 
            if (content) { 
                let reply = await superagent.getReply(content) 
                console.log('音娱乐行:', reply)
                let str520MUS= '音娱乐行:'+reply
                try {
                    await delay(2000)
                    await contact.say(str520MUS)
                } catch (e) {
                    console.error(e)
                }
            } 
        }
    } 
}
}
// 创建微信520MUS说爱你定时任务
 async function initDay6() {
 console.log(已经设定520MUS说爱你任务)
 schedule.setSchedule(config.SENDDATE6, async() => {
 console.log(‘你的贴心小助理开始工作啦!’)
 let logMsg
 let contact = await bot.Contact.find({ name: config.NICKNAME }) || await bot.Contact.find({ alias: config.NAME }) // 获取你要发送的联系人
 let one = await superagent.getOne() //获取每日一句
 let weather = await superagent.getTXweather() //获取天气信息
 let today = await untils.formatDate(new Date()) //获取今天的日期
 let memorialDay = untils.getDay(config.MEMORIAL_DAY) //获取纪念日天数
 let sweetWord = await superagent.getSweetWord()
 let str = today + ‘
我们在一起的第’ + memorialDay + ‘天
’ + ‘
元气满满的一天开始啦,要开心噢_
’ +
 ‘
今日天气
’ + weather.weatherTips + ‘
’ + weather.todayWeather + ‘
每日一句:
’ + one + ‘
’ + ‘
520告白情话:
’ + sweetWord + ‘

’ + ‘————————最爱你的我’
 try {
 logMsg = str
 await delay(2000)
 await contact.say(str) // 发送消息
 } catch (e) {
 logMsg = e.message
 }
 console.log(logMsg)
 })
 }
 // 创建微信520MUS说爱你定时任务
 async function initDay11() {
 console.log(已经设定520MUS说爱你任务二)
 schedule.setSchedule(config.SENDDATE23, async() => {
 console.log(‘你的晚安小助理开始工作啦!’)
 let logMsg1
 let contact1 = await bot.Contact.find({ name: config.NICKNAME }) || await bot.Contact.find({ alias: config.NAME }) // 获取你要发送的联系人
let today1 = await untils.formatDate(new Date()) //获取今天的日期 
    let sweetWord1 = await superagent.getSweetWord()
 
    let str1 = today1  + '<br>很晚了,要睡美美的觉了噢^_^<br>'  + '<br>520告白情话:<br>' + sweetWord1 + '<br><br>' + '————————最爱你的我'
   
    try {
        logMsg1 = str1
        await delay(2000)
        console.log(logMsg1,contact1)
        await contact1.say(str1) // 发送消息
    } catch (e) {
        logMsg1 = e.message
    }
    console.log(logMsg1)
})
}
// 创建微信520MUS说爱你定时任务
 async function initDay1() {
 console.log(已经设定520MUS说爱你任务三)
 schedule.setSchedule(config.SENDDATE1, async() => {
 console.log(‘你的通宵小助理开始工作啦!’)
 let logMsg2
 let contact2 = await bot.Contact.find({ name: config.NICKNAME }) || await bot.Contact.find({ alias: config.NAME }) // 获取你要发送的联系人
let today2 = await untils.formatDate(new Date()) //获取今天的日期 
    let sweetWord2 = await superagent.getSweetWord()
 
    let str2 = today2  + '<br>很晚了,不能通宵噢^_^<br>'  + '<br>520告白情话:<br>' + sweetWord2 + '<br><br>' + '————————最爱你的我'
   
    try {
        logMsg2 = str2
        await delay(2000)
        console.log(logMsg2,contact2)
        await contact2.say(str2) // 发送消息
    } catch (e) {
        logMsg2 = e.message
    }
    console.log(logMsg2)
})
}
const bot = new Wechaty({ name: ‘WechatEveryDay’ })
bot.on(‘scan’, onScan)
 bot.on(‘login’, onLogin)
 bot.on(‘logout’, onLogout)
 bot.on(‘message’, onMessage)
 //
 bot.on(‘room-topic’, (room, topic, oldTopic, changer) => {
 console.log(Room ${room.topic()} topic changed from ${oldTopic} to ${topic} by ${changer.name()})
 })
 bot.start()
 .then(() => console.log(‘开始登陆微信’))
 .catch(e => console.error(e))

哈哈最主要的是源码地址
点击下载源码