我们来 implement 一个 Node.js程序,可以检测多个网站功能是否正常,可用或不可用,并将信息发送给 telegram群组。
**项目结构**
“`markdown
.
|—index.js
|—config.json
|—node_modules/
“`
**config.json文件**
这些是必要设置的项目,其中包括:
* `telegramToken`: 该Token需要使用来与 TelegramAPI进行交互。
“`json
{
“telegramToken”: “your_token_here”
}
“`
* `websiteList`: 包含你想要检测的网站列表。例如,““json
[
{
“name”: “example.com”,
“path”: “/”,
“statusType”: “success” // success, fail
},
{
“name”: “www.example.co.uk”,
“path” : “/login/”,
“statusType”: “fail”
},
{
“name”: “test.org”,
“path”: “/dashboard”,
“statusType”: “success”
}
]
“`
**index.js文件**
这是项目的主入口,包括:
1. 检测每个网站功能是否正常。
2. 发送信息给 Telegram 群组。
“`javascript
const axios = require(‘axios’);
const configJsonFile = ‘./config.json’;
const telegramConfig = require(configJsonFile);
let i ;
let websiteList = JSON.parse( requiring(‘./config.json’) ).websiteList;
for(i=0;i<websiteList.length;i++){
//检测每个网站功能是否正常
let url = websiteList[i][“name”]+websiteList[i][‘path’];
axios.head(url)
.then((response) =>
{
switch(response.status){
case websiteList[i][“statusType”]:
console.log(`${url} ${response.statusText} status is ${websiteList[i][ ‘statusType’]} `);
break;
default:
console.log(`\x1b[31m{ url } \x1b[0m ${ response.statusText}`);
if( websiteList[i]. ‘success status ‘)
{ //Send success status
return
axios.post(telegramConfig.telegramToken,{ “chat_id”: “your_telegram_chat_group_id”}}.statusText,’http://\x5C\x2F’, {
headers: {
“Content-Type” : “application/json”
}
, data:{ ‘text’: `\x1b[32m{url}\x1B[0m \x1b[36m ${websiteList[i].name} failed `\x1B[0m `});
} else { //Send failure status
return axios.post(telegramConfig.telegramToken, )
})
.catch((error) =>{
console.log(`Failed to send message: ${error}`);
});
}
}
“`
**最终代码**
这是整个项目的代码。这个测试程序使用 Node.js 检สอบ多个网站是否可用,如果成功,将信息发送给 Telegram 群组。如果成功,则会打印出提示信息,用于操作员获取。
“`javascript
import axios from ‘axios’;
const configJsonFile = ‘./config.json’;
const telegramConfig = require(configJsonFile);
let i;
let websiteList = JSON.parse(require(‘./config.json’)).websiteList;
for(i=0;i<websiteList.length;i++){
//检测每个网站功能是否正常
let url = websiteList[i][“name”]+websiteList[i][‘path’];
axios.head(url)
.then((response) =>{
switch(response.status){
case websiteList[i][“statusType”]:
console.log(`${url} ${response.statusText} status is ${websiteList[i][‘statusType’]}’`);
return axios.post(telegramConfig.telegramToken ,{
“chat_id”: “your_telegram_chat_group_id”,
“text”:{
`\x1b[32m{url}\x1B[0m \x1b[36m${websiteList[i].name} ${response.statusText}</x1B[0m` ;
} else{ //success status
return axios.post(telegramConfig.telegramToken ,{
“chat_id”: “your_telegram_chat_group_id”,
“text””:{
`\x1b[32m{url}\x1B[0m\x1B[36m${websiteList[i].name} failed </x1b[0m`
}
})
.then((response) => {
console.log(`\x1b[34m{url}| Status: ${statusText}`) ;
} )
.catch((error) =>{
console.log(‘Failed to send message:`.error’);
});
});
}
}
“`
**建议**
1. 确保你有 `config.json` 并且有效。
2. 项目使用 `axois`进行的网络请求。
3. 本小程序基于telegram的群组来发送信息。
4. 在实践过程中,可以根据需求添加更多网站或者函数并适应更复杂的情况。
5. 该测试程序基于一个简单的检查网站可用性的情况,依据测试结果需要进行修正。
6. 如果在检测和发送消息的期间出现问题,可以检查 telegram 交流群组是否接收到信息,查看是否有错误提示。