一、添加管理员
刚刚的教程写完对接就结束了,回看了下,发现还没添加管理员,所以再补充下。
例如我现在不是管理员,所以我跟他说重启都不搭理我。
//设置qq管理员 其他平台类似
set qq admin 12345698
set wxKeAImao admin 12345698
set wxQianxun admin 12345698
set wxXyo admin 12345698
set tgBot admin 12345698
set HumanTG admin 12345698
set wxWork admin 12345698
这个是我的id 所以我发送 set wxWork admin RiChuRiLuo 就可以了
这就成功了 很简单把。
二、对接Telegram bot
进入电报 找到
然后对话
复制API,然后插件配置里找到tgBot填写上
都完事之后保存,回到TG给自己的机器人发个信息,没回复,看后台也没消息,再次重启,这次后台自己在安装东西。
安装完成后,再次发信息看后台。
框起来的就是我的TGid,set tgBot admin 12345698 把数字换成我的ID就可以了
完事。
三、一些简单脚本。
这个其实订阅里很多都有,例如天气,油价,疯狂星期四,每天60s之类的,看自己喜欢,自己下载就可以了。
这边分享几个简单的,都是让GPT写的。
下厨房.js
/**
* @author RiChuRiLuo
* @team RiChuRiLuo
* @name 下厨房
* @origin 自定义
* @version 1.0.0
* @description 查询下厨房菜谱
* @rule ^(.+怎么做)$
* @admin true
*/
const axios = require('axios');
const cheerio = require('cheerio');
module.exports = async sender => {
const keyword = sender.param(1).replace('怎么做', '').trim();
const url = `https://www.xiachufang.com/search/?keyword=${encodeURIComponent(keyword)}`;
try {
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const firstResult = $('.normal-recipe-list li').first();
const recipeLink = firstResult.find('a').attr('href');
const recipeTitle = firstResult.find('.name').text().trim();
const recipeUrl = `https://www.xiachufang.com${recipeLink}`;
const recipePage = await axios.get(recipeUrl);
const $$ = cheerio.load(recipePage.data);
const recipeImg = $$('div.cover img').attr('src');
const ingredients = $$('.ings li').map((i, el) => $(el).text().trim()).get().join('\n');
const steps = $$('.steps li').map((i, el) => $$(el).text().trim()).get().join('\n\n');
const message = `
【${recipeTitle}】
原料:
${ingredients}
步骤:
${steps}
更多详情请访问:${recipeUrl}
`;
await sender.reply({
type: 'text',
msg: message
});
if (recipeImg) {
await sender.reply({
type: 'image',
path: recipeImg
});
}
} catch (error) {
console.error(error);
await sender.reply('无法获取该菜谱的信息,请稍后再试。');
}
};
注意:这个脚本引用了 'axios' 'cheerio' 所以当我没有安装这两个模块时候,就会报错不加载。
安装模块的指令 npm i xxx
npm i axios
npm i cheerio
随机图片.js
/**
* @author RiChuRiLuo
* @team RiChuRiLuo
* @name 随机图片
* @version 1.0.1
* @description 随机获取并发送一张指定主题的图片,并继续发送来源网址中的所有图片(每次10张)
* @rule ^随机图片$
* @admin true
*/
const request = require('request');
const cheerio = require('cheerio');
module.exports = async s => {
if (!(await s.isAdmin())) {
await s.reply('你没有权限使用这个命令。');
return;
}
const url = 'https://www.ikanins.com/'; // 目标网站 URL
const maxImagesPerPage = 10;
let allImages = [];
let currentIndex = 0;
let continueCount = 0;
try {
const { src: randomImage, link } = await fetchRandomImageInfo(url);
if (!randomImage) {
await s.reply('未能获取到图片,请稍后再试。');
return;
}
// 发送随机选择的图片
await s.reply({
type: 'image',
path: randomImage
});
// 获取并处理来源网址中的所有图片
allImages = await fetchImagesFromPage(link);
if (allImages.length === 0) {
await s.reply('未能获取到来源页面中的图片,请稍后再试。');
return;
}
// 发送图片,按10张一组
while (currentIndex < allImages.length) {
const imagesToSend = allImages.slice(currentIndex, currentIndex + maxImagesPerPage);
await sendImages(s, imagesToSend);
currentIndex += maxImagesPerPage;
if (currentIndex < allImages.length) {
const reply = await s.reply("是否继续返回剩余图片,回复Y继续,回复N取消,回复YYY发送全部");
const input = await s.waitInput(() => {}, 30);
if (!input) {
await s.reply("操作超时或取消,已退出。");
return;
}
const content = input.getMsg().toUpperCase();
if (content === 'YYY') {
await sendImages(s, allImages.slice(currentIndex));
return;
} else if (content !== 'Y') {
return s.reply('已取消发送');
}
continueCount++;
if (continueCount >= 3) {
continueCount = 0; // 重置计数器
}
}
}
} catch (error) {
console.error('发送图片时发生错误:', error);
await s.reply('未能获取到图片,请稍后再试。');
}
};
async function fetchRandomImageInfo(url) {
return new Promise((resolve, reject) => {
request(url, (error, response, body) => {
if (error) {
return reject(error);
}
const $ = cheerio.load(body);
const images = [];
$('img').each((index, element) => {
const src = $(element).attr('src');
const link = $(element).closest('a').attr('href');
if (src && link) {
images.push({ src, link });
}
});
if (images.length === 0) {
return resolve(null);
}
const randomImage = images[Math.floor(Math.random() * images.length)];
resolve(randomImage);
});
});
}
async function fetchImagesFromPage(url) {
return new Promise((resolve, reject) => {
request(url, (error, response, body) => {
if (error) {
return reject(error);
}
const $ = cheerio.load(body);
const images = [];
$('img').each((index, element) => {
const src = $(element).attr('src');
if (src) {
images.push(src);
}
});
resolve(images);
});
});
}
async function sendImages(s, images) {
for (const image of images) {
await s.reply({
type: 'image',
path: image
});
}
}
大概就这么个样子,另外无界还可以链接青龙查个豆子,诺兰,兔子登陆狗东之类的。
也可以对接微信,qq之类的,不过我害怕封号,也怕麻烦,所以一直也没弄。