-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbot.js
103 lines (94 loc) · 2.96 KB
/
bot.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Dependencies
const express = require("express");
const app = express();
const axios = require("axios");
const bodyParser = require("body-parser");
const url = "https://api.telegram.org/bot";
const apiToken = process.env.TOKEN;
const port = process.env.PORT || 3000;
// Configurations
app.use(bodyParser.json());
// Endpoints
app.post('/', async (req, res) => {
//Logs
console.log("-------");
console.log(req.body);
console.log("-------");
let chatId = undefined;
let sentMessage = undefined;
if (req.body.message) {
chatId = req.body.message.chat?.id;
sentMessage = req.body.message.text;
} else if (req.body.my_chat_member) {
chatId = req.body.my_chat_member.chat?.id;
}
if (chatId === undefined) {
res.status(200).send({});
return;
}
if (sentMessage === undefined || !sentMessage.match(/\/verifyETH (.+)/)) {
res.status(200).send({});
return;
}
else
{
try {
let parameter = sentMessage.match(/\/verifyETH (.+)/)[1];
let data = JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "mt_addressRiskScore",
params: [
{
chain: "ETH",
address: parameter,
},
],
});
let config = {
method: "post",
maxBodyLength: Infinity,
url: process.env.URL,
headers: {
"Content-Type": "application/json",
},
data: data,
};
await axios
.request(config)
.then((response) => {
const jsonPretty = JSON.stringify(response.data.result, null, 2);
const text =
`Here is your result:\n\n<pre>${jsonPretty}</pre>\n\nHere are some useful links:\n\n` +
"MistTrack AML API on QuickNode Marketplace: https://marketplace.quicknode.com/add-on/misttrack-aml-api\n\n" +
"API Endpoints: Get Risk Score - Risk Descriptions: https://docs.misttrack.io/api-endpoints/get-risk-score#risk-descriptions-for-detail_list\n\n" +
"API Endpoints: Get Risk Score - Risk Level Guide: https://docs.misttrack.io/api-endpoints/get-risk-score#risk-level-guide";
axios
.post(`${url}${apiToken}/sendMessage`, {
chat_id: chatId,
text: text,
parse_mode: "HTML", // Set parse_mode to "HTML"
})
.then((response) => {
res.status(200).send(response);
return;
})
.catch((error) => {
res.send(error);
return;
});
})
.catch((error) => {
res.send(error);
return;
});
} catch (error) {
res.send(error);
return;
}
}
});
// Listening
app.listen(port, () => {
console.log(`Listening on port ${port}`);
});