代码拉取完成,页面将自动刷新
/**
* WechatBot
* - https://github.com/gengchen528/wechatBot
*/
const {Wechaty,Friendship} = require('wechaty')
const schedule = require('./schedule/index')
const config = require('./config/index')
const untils = require('./untils/index')
const superagent = require('./superagent/index')
const {FileBox} = require('file-box') //文件读取模块
// 二维码生成
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}登录了`)
// 登陆后创建定时任务
schedule.setSchedule(config.SENDDATE,()=>{
console.log('你的贴心小助理开始工作啦!')
main()
})
}
//登出
function onLogout(user) {
console.log(`${user} 登出`)
}
// 监听对话 根据关键词自动加群
async function onMessage (msg) {
const contact = msg.from() // 发消息人
const content = msg.text() //消息内容
const room = msg.room() //是否是群消息
const roomCodeUrl = FileBox.fromUrl(config.ROOMCODEURL) //来自url的文件
const roomCodeLocal = FileBox.fromFile(config.ROOMLOCALPATH) //添加本地文件
if (msg.self()) {
return
}
if(room){ // 如果是群消息
const topic = await room.topic()
console.log(`群名: ${topic} 发消息人: ${contact.name()} 内容: ${content}`)
}else { // 如果非群消息
console.log(`发消息人: ${contact.name()} 消息内容: ${content}`)
if(config.AUTOADDROOM){ //判断是否开启自动加群功能
let addRoomReg = eval(config.ADDROOMWORD)
let roomReg = eval(config.ROOMNAME)
if(addRoomReg.test(content)&&!room){
let keyRoom = await this.Room.find({topic: roomReg})
if(keyRoom){
try{
await contact.say('你好,由于目前群里人数超过100,群主将会看到消息后,第一时间把你拉入群中!')
await contact.say('谢谢理解^_^')
// await contact.say(roomCodeLocal||roomCodeUrl)
}catch (e) {
console.error(e)
}
}
}else {
if(config.AUTOREPLY){ // 如果开启自动聊天
let reply = await superagent.getReply(content)
console.log('图灵机器人回复:',reply)
try{
await contact.say(reply)
}catch (e) {
console.error(e)
}
}
}
}else {
if(config.AUTOREPLY){ // 如果开启自动聊天
let reply = await superagent.getReply(content)
console.log('图灵机器人回复:',reply)
try{
await contact.say(reply)
}catch (e) {
console.error(e)
}
}
}
}
}
// 自动加好友功能
async function onFriendShip(friendship) {
let logMsg
try {
logMsg = '添加好友' + friendship.contact().name()
console.log(logMsg)
switch (friendship.type()) {
/**
*
* 1. New Friend Request
*
* when request is set, we can get verify message from `request.hello`,
* and accept this request by `request.accept()`
*/
case Friendship.Type.Receive:
let addFriendReg = eval(config.ADDFRIENDWORD)
if (addFriendReg.test(friendship.hello())&&config.AUTOADDFRIEND) { //判断是否开启自动加好友功能
logMsg = '自动添加好友,因为验证信息中带关键字‘每日说’'
await friendship.accept()
} else {
logMsg = '没有通过验证 ' + friendship.hello()
}
break
/**
*
* 2. Friend Ship Confirmed
*
*/
case Friendship.Type.Confirm:
logMsg = 'friend ship confirmed with ' + friendship.contact().name()
break
}
} catch (e) {
logMsg = e.message
}
console.log(logMsg)
}
// 自动发消息功能
async function main() {
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.getWeather() //获取天气信息
let today = await untils.formatDate(new Date())//获取今天的日期
let memorialDay = untils.getDay(config.MEMORIAL_DAY)//获取纪念日天数
let str = today + '<br>我们在一起的第' + memorialDay + '天<br>'+ '<br>元气满满的一天开始啦,要开心噢^_^<br>'
+ '<br>今日天气<br>' + weather.weatherTips +'<br>' +weather.todayWeather+ '<br>每日一句:<br>'+one+'<br><br>'+'————————最爱你的我'
try{
logMsg = str
await contact.say(str) // 发送消息
}catch (e) {
logMsg = e.message
}
console.log(logMsg)
}
// 加群提醒
function roomJoin(room, inviteeList, inviter) {
const nameList = inviteeList.map(c => c.name()).join(',')
room.topic().then(function (res) {
const roomNameReg = eval(config.ROOMNAME)
if(roomNameReg.test(res)){
console.log(`群名: ${res} ,加入新成员: ${nameList}, 邀请人: ${inviter}`)
room.say(`${res}:欢迎新朋友 @${nameList},<br>使用过程中有什么问题都可以在群里提出`)
}
})
}
const bot = new Wechaty({name:'WechatEveryDay'})
bot.on('scan', onScan)
bot.on('login', onLogin)
bot.on('logout', onLogout)
bot.on('message', onMessage)
bot.on('friendship', onFriendShip)
bot.on('room-join',roomJoin)
bot.start()
.then(() => console.log('开始登陆微信'))
.catch(e => console.error(e))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。