2025-04-25 12:50:13 +02:00
|
|
|
/*
|
|
|
|
This file is part of »munin«.
|
|
|
|
|
|
|
|
Copyright 2025 'Fenris Wolf' <fenris@folksprak.org>
|
|
|
|
|
|
|
|
»munin« is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
»munin« is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
|
|
along with »munin«. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
namespace _munin.targets.telegram_bot
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
*/
|
|
|
|
export type type_parameters = {
|
|
|
|
bot_token : string;
|
|
|
|
chat_id : int;
|
2025-04-28 21:51:03 +02:00
|
|
|
reminders : Array<int>;
|
2025-04-25 12:50:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*/
|
|
|
|
async function send(
|
|
|
|
parameters : type_parameters,
|
|
|
|
labels : _munin.type_labels,
|
|
|
|
event : _munin.type_event
|
|
|
|
) : Promise<void>
|
|
|
|
{
|
|
|
|
await lib_plankton.telegram.bot_call_send_message(
|
|
|
|
parameters.bot_token,
|
|
|
|
parameters.chat_id,
|
|
|
|
lib_plankton.string.coin(
|
2025-05-06 22:12:02 +02:00
|
|
|
"*{{head}}*\n\n\{{title_label}} | {{macro_tags}}{{title_value}}\n{{time_label}} | {{time_value}}{{macro_location}}",
|
2025-04-25 12:50:13 +02:00
|
|
|
{
|
|
|
|
"head": labels.head,
|
2025-05-06 22:12:02 +02:00
|
|
|
"macro_tags": (
|
|
|
|
(event.tags === null)
|
|
|
|
?
|
|
|
|
""
|
|
|
|
:
|
|
|
|
(event.tags.map(tag => ("{" + tag + "}")).join(" ") + " ")
|
|
|
|
),
|
2025-04-25 12:50:13 +02:00
|
|
|
"title_label": labels.title.toUpperCase(),
|
|
|
|
"title_value": event.title,
|
|
|
|
"time_label": labels.time.toUpperCase(),
|
2025-05-13 19:19:51 +02:00
|
|
|
"time_value": lib_plankton.pit.timespan_format(
|
|
|
|
event.begin,
|
|
|
|
event.end,
|
|
|
|
{
|
|
|
|
"adjust_to_ce": true,
|
|
|
|
}
|
|
|
|
),
|
2025-04-25 12:50:13 +02:00
|
|
|
"macro_location": (
|
|
|
|
(event.location === null)
|
|
|
|
?
|
|
|
|
""
|
|
|
|
:
|
|
|
|
lib_plankton.string.coin(
|
|
|
|
"\n{{location_label}} | {{location_value}}",
|
|
|
|
{
|
|
|
|
"location_label": labels.location.toUpperCase(),
|
|
|
|
"location_value": event.location,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
),
|
|
|
|
}
|
|
|
|
),
|
|
|
|
{
|
2025-05-06 22:12:02 +02:00
|
|
|
"parse_mode": "Markdown",
|
2025-04-25 12:50:13 +02:00
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*/
|
|
|
|
export function implementation_target(
|
|
|
|
parameters : type_parameters
|
|
|
|
) : _munin.type_target
|
|
|
|
{
|
|
|
|
return {
|
2025-04-28 21:51:03 +02:00
|
|
|
"reminders": parameters.reminders,
|
|
|
|
"show": () => lib_plankton.string.coin(
|
|
|
|
"telegram:{{chat_id}}",
|
|
|
|
{
|
|
|
|
"chat_id": parameters.chat_id.toFixed(0),
|
|
|
|
}
|
|
|
|
),
|
2025-04-25 12:50:13 +02:00
|
|
|
"send": (labels, event) => send(parameters, labels, event),
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|