微信AI群聊机器人_微信机器人
注意:建议用自己小号使用,避免风险,且新创建的微信号可能不支持使用,建议使用年份长一点的微信号
效果:
群聊功能:
微信聊天机器人接入ai
此源码功能介绍
1、本地运行后,自动开启3000端口,可以使用接口主动调用微信机器人,往指定群聊发送消息,示例如下:
2、群聊@机器人,如果输入摸鱼,则调用摸鱼网站,发送摸鱼信息
3、群聊@机器人,如果输入其他信息,则调用千帆AI,时间可能会稍长一点,因为需要等ai返回数据后,才进行回复
具体如何配置千帆AI信息,可以访问“墨水直达”小程序,文章搜索“百度千帆配置”查看具体流程
群聊示例如下:
安装步骤(windows):
1、将文件放到服务器上,或者本地电脑
2、安装node.js。双击“node-v16.20.2-x64.msi”
3、cmd 输入node -v 检查是否安装好
4、cmd 切换到你的文件目录。输入“npm install” 先安装依赖,比如:
5、运行程序
cmd继续输入:
node server.js
6、最后扫码登录即可,如果二维码显示不全,可以cmd选中二维码下方的路径,右键进行复制,然后浏览器访问,即可登录,
注意,代码需要改动的地方为:
具体代码:
const { WechatyBuilder } = require(\'wechaty\');const qrTerm = require(\'qrcode-terminal\');const axios = require(\'axios\'); // 确保您已安装axiosconst bodyParser = require(\'body-parser\');const express = require(\'express\');const config = require(\'./config\'); // 确保你有一个配置文件const { sleep, transfer } = require(\'./utils\')let LOGIN_NAME = \'\';// 待转发的群var forwardRooms = [];// 【群】转发锁let isRoomBlock = false;// 初始化Wechaty机器人const bot = WechatyBuilder.build({ name: \'wx-bot\', puppet: \'wechaty-puppet-wechat\', puppetOptions: { uos: true, },});// 定义扫码登录事件处理函数function onScan(qrcode, status) { qrTerm.generate(qrcode, { small: true }); const qrcodeImageUrl = [ \'https://wechaty.js.org/qrcode/\', encodeURIComponent(qrcode), ].join(\'\'); console.log(qrcodeImageUrl);}// 定义登录成功事件处理函数async function onLogin(user) { console.log(`${user}已上线o`); LOGIN_NAME = user.name(); // 待转发内容的【群】,由于是异步事件,这里先提前获取 config.topics.forEach(async topic => { let tempRoom = await bot.Room.find({ topic }); forwardRooms.push(tempRoom); });}// 定义消息事件处理函数async function onMessage(msg) { console.log(\"聊天者\" + msg.talker().name()); const text = msg.text(); // 聊天内容 console.log(\"聊天内容\" + text); const room = msg.room(); // 群消息 console.log(room); const type = msg.type(); if (text.includes(`=======================`)) { if (forwardRooms && forwardRooms.length > 0 && !isRoomBlock) { forwardRooms.forEach(room => { msg.forward(room); isRoomBlock = true; }); } } if (msg.self()) return; if (room) { try { const isMentionSelf = await msg.mentionSelf(); // 是否@我了 if (isMentionSelf || text.includes(`@${LOGIN_NAME}`)) { if (config.autoReply) { if (type === bot.Message.Type.Text) { // await sleep(2000); var replyMessage = \'\'; //这里如果群里@我的内容包含摸鱼,则返回摸鱼网站内容,否则调用ai if (text.includes(`摸鱼`)) { const response = await axios.get(\'https://moyu.awsl.icu/api/moyu_json?day=10\'); replyMessage = response.data; // 假设返回的数据是您要发送的消息 msg.say(replyMessage); // 在这里发送接口返回的消息 } else { var aitext = text.replace(/@inkrobot/g, \'\'); //这里用的千帆大模型,需要具体配置教程请访问“墨水直达”小程序,文章搜索“百度千帆配置”查看具体流程 var options = { \'method\': \'POST\', \'url\': \'https://qianfan.xxx改成你自己的接口\', \'headers\': { \'Content-Type\': \'application/json\', \'X-Appbuilder-Authorization\': \'Bearer 加你自己的密钥\' }, data: JSON.stringify({ \"app_id\": \"自己的appid\", \"query\": aitext, \"conversation_id\": \"对话id\", \"stream\": false }) }; await axios(options) .then(response => { //这里可能会有图片和ppt链接, let Link = \'\'; response.data.content.forEach(item => { if (item.outputs && Array.isArray(item.outputs.urls) && item.outputs.urls.length > 0) {Link = item.outputs.urls[0]; // 假设只取第一个链接 } if (item.outputs && typeof item.outputs.image === \'string\') {Link = item.outputs.image; // 获取image链接 } }); msg.say(response.data.answer+Link); // 在这里发送接口返回的消息 }) .catch(error => { console.log(\"cuyo\"); }); } } } } } catch (error) { console.log(\'message-error\', error); } }}// 定义登出事件处理函数function onLogout(user) { console.log(`${user}已下线`);}// 定义错误事件处理函数function onError(err) { console.log(`啊哦,出错了:(, ${err}`); bot.stop();}// 监听扫码、登录、消息等事件bot.on(\'scan\', onScan).on(\'login\', onLogin).on(\'message\', onMessage).on(\'logout\', onLogout).on(\'error\', onError);// 启动Wechaty机器人bot.start() .then(() => { console.log(\'Wechaty机器人启动成功\'); // 在Wechaty机器人成功登录后再启动Express服务器 const app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 定义发送消息的POST接口 app.post(\'/sendMessage\', async (req, res) => { const { roomName, message } = req.body; if (!roomName || !message) { return res.status(400).send(\'缺少roomName或message参数\'); } try { const room = await bot.Room.find({ topic: roomName }); if (!room) { return res.status(404).send(\'未找到指定的群\'); } await room.say(message); res.send(\'消息发送成功\'); } catch (error) { console.error(\'发送消息出错:\', error); res.status(500).send(\'消息发送失败\'); } }); // 启动Express服务器 const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`服务器正在运行在端口 ${port}`); }); }) .catch(err => { console.log(\'Wechaty机器人启动失败:\', err); bot.stop(); });
源码直接小程序里点获取资源即可获取