微信AI群聊机器人
微信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'); // 确保您已安装axios
const 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();
});
源码直接小程序里点获取资源即可获取
更多推荐
所有评论(0)