59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
const axios = require("axios");
|
|
const {R} = require("redbean-node");
|
|
|
|
class Notification {
|
|
static async send(notification, msg) {
|
|
if (notification.type === "telegram") {
|
|
let res = await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, {
|
|
params: {
|
|
chat_id: notification.telegramChatID,
|
|
text: msg,
|
|
}
|
|
})
|
|
return true;
|
|
} else {
|
|
throw new Error("Notification type is not supported")
|
|
}
|
|
}
|
|
|
|
static async save(notification, notificationID, userID) {
|
|
let bean
|
|
|
|
if (notificationID) {
|
|
bean = await R.findOne("notification", " id = ? AND user_id = ? ", [
|
|
notificationID,
|
|
userID,
|
|
])
|
|
|
|
if (! bean) {
|
|
throw new Error("notification not found")
|
|
}
|
|
|
|
} else {
|
|
bean = R.dispense("notification")
|
|
}
|
|
|
|
bean.name = notification.name;
|
|
bean.user_id = userID;
|
|
bean.config = JSON.stringify(notification)
|
|
await R.store(bean)
|
|
}
|
|
|
|
static async delete(notificationID, userID) {
|
|
let bean = await R.findOne("notification", " id = ? AND user_id = ? ", [
|
|
notificationID,
|
|
userID,
|
|
])
|
|
|
|
if (! bean) {
|
|
throw new Error("notification not found")
|
|
}
|
|
|
|
await R.trash(bean)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
Notification,
|
|
}
|