first commit
commit
fd752fed6f
@ -0,0 +1,2 @@
|
|||||||
|
node_modules
|
||||||
|
package-lock.json
|
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"bottoken": "<BOT_TOKEN>",
|
||||||
|
"pager": {
|
||||||
|
"url": "http://127.0.0.1:3000/api/message/advanced",
|
||||||
|
"paramsNormal": {
|
||||||
|
"type": "duplex",
|
||||||
|
"routing": {
|
||||||
|
"device": "birdyslim",
|
||||||
|
"connectors": [
|
||||||
|
[ "pocsag", "133708C" ]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"paramsPriority": {
|
||||||
|
"type": "duplex",
|
||||||
|
"routing": {
|
||||||
|
"device": "birdyslim",
|
||||||
|
"connectors": [
|
||||||
|
[ "pocsag", "133708A" ]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
const config = require('./config.json')
|
||||||
|
|
||||||
|
const { Telegraf, Markup } = require('telegraf')
|
||||||
|
const io = require("socket.io-client")
|
||||||
|
const axios = require('axios')
|
||||||
|
const socket = io(new URL(config.pager.url).origin)
|
||||||
|
|
||||||
|
const bot = new Telegraf(config.bottoken)
|
||||||
|
bot.start((ctx) => ctx.reply('Welcome, write me a message'))
|
||||||
|
let assoc = {}
|
||||||
|
|
||||||
|
function filter(txt) {
|
||||||
|
if (txt.length > 240) txt = txt.substring(0, 240)
|
||||||
|
return txt.replace(/[^\x00-\x7F]/g, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
function editStatus(msgId, msg) {
|
||||||
|
if (!assoc[msgId]) return
|
||||||
|
console.log(assoc[msgId])
|
||||||
|
const [tgChatId, tgMsgId] = [assoc[msgId].tgchat, assoc[msgId].tgmsg]
|
||||||
|
assoc[msgId].newText = assoc[msgId].newText + '\n' + msg
|
||||||
|
console.log(assoc[msgId])
|
||||||
|
bot.telegram.editMessageText(tgChatId, tgMsgId, null, assoc[msgId].newText).then(console.log)
|
||||||
|
}
|
||||||
|
socket.on('msgmgr:event', (eventType, eventData) => {
|
||||||
|
console.log(eventType, eventData)
|
||||||
|
switch (eventType) {
|
||||||
|
case 'status': {
|
||||||
|
const [msgId, uuid, status] = eventData
|
||||||
|
editStatus(msgId, `${ uuid } is ${ status }`)
|
||||||
|
} break;
|
||||||
|
case 'read':
|
||||||
|
editStatus(eventData, 'read')
|
||||||
|
break;
|
||||||
|
case 'response': {
|
||||||
|
const [msgId, response] = eventData
|
||||||
|
editStatus(msgId, 'response ' + response)
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
bot.on('message', (ctx) => {
|
||||||
|
if (!ctx.update.message.text) return ctx.reply("not a textmessage")
|
||||||
|
// if (!ctx.update.message.type)
|
||||||
|
console.log(ctx.update.message.from)
|
||||||
|
const preview = `Preview: ${ filter(ctx.update.message.from.first_name) }:${ filter(ctx.update.message.text) }`
|
||||||
|
console.log(preview)
|
||||||
|
ctx.reply(preview, Markup.inlineKeyboard([
|
||||||
|
Markup.button.callback('💬(Receive ACK)', 'normal'),
|
||||||
|
Markup.button.callback('🚨(Receive,Read,Response ACKs)', 'priority')
|
||||||
|
]))
|
||||||
|
})
|
||||||
|
bot.action('normal', async (ctx) => {
|
||||||
|
const origText = ctx.update.callback_query.message.text.substring(8+1)
|
||||||
|
await ctx.answerCbQuery()
|
||||||
|
await ctx.editMessageReplyMarkup(undefined)
|
||||||
|
let msgId = (await axios.post(config.pager.url, Object.assign({ ...config.pager.paramsNormal }, { payload: origText }))).data
|
||||||
|
assoc[msgId] = {
|
||||||
|
tgmsg: ctx.update.callback_query.message.message_id,
|
||||||
|
text: origText,
|
||||||
|
newText: `Preview: ${ origText }\n\n--[${ msgId }]--\n`,
|
||||||
|
tgchat: ctx.update.callback_query.message.chat.id
|
||||||
|
}
|
||||||
|
await ctx.editMessageText(assoc[msgId].newText)
|
||||||
|
await ctx.replyWithSticker('CAACAgIAAxkBAANwYJRBBO79JToCqzsjJi1DltHnaTcAAmYNAALviaBI68kAAd6sFEZIHwQ')
|
||||||
|
})
|
||||||
|
bot.action('priority', async (ctx) => {
|
||||||
|
const origText = ctx.update.callback_query.message.text.substring(8+1)
|
||||||
|
await ctx.answerCbQuery()
|
||||||
|
await ctx.editMessageReplyMarkup(undefined)
|
||||||
|
let msgId = (await axios.post(config.pager.url, Object.assign({ ...config.pager.paramsPriority }, { payload: origText }))).data
|
||||||
|
assoc[msgId] = {
|
||||||
|
tgmsg: ctx.update.callback_query.message.message_id,
|
||||||
|
text: origText,
|
||||||
|
newText: `Preview: ${ origText }\n\n--[${ msgId }]--\n`,
|
||||||
|
tgchat: ctx.update.callback_query.message.chat.id
|
||||||
|
}
|
||||||
|
await ctx.editMessageText(assoc[msgId].newText)
|
||||||
|
await ctx.replyWithSticker('CAACAgIAAxkBAANwYJRBBO79JToCqzsjJi1DltHnaTcAAmYNAALviaBI68kAAd6sFEZIHwQ')
|
||||||
|
})
|
||||||
|
|
||||||
|
bot.launch()
|
||||||
|
|
||||||
|
// Enable graceful stop
|
||||||
|
process.once('SIGINT', () => bot.stop('SIGINT'))
|
||||||
|
process.once('SIGTERM', () => bot.stop('SIGTERM'))
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.21.1",
|
||||||
|
"moment": "^2.29.1",
|
||||||
|
"socket.io-client": "^4.0.2",
|
||||||
|
"telegraf": "^4.3.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue