Bot Telegramowy w Typescript
Dowiedz się jak stworzyć bota na telegramie, dodać w nim nasłuch na komendy oraz skonfigurować wysyłanie powiadomień.
Daniel Gustaw
• 3 min read
Jeden z projektów, które wypuściliśmy w tamtym miesiącu używał Telegrama do wysyłania powiadomień. Wpis pokaże Ci jak skonfigurować wysyłkę powiadomień od zera używając typescript
.
Przygotowanie środowiska
Zaczniemy od przygotowania plików konfiguracyjnych:
tsc --init
npm init -y
Instalujemy telebot
- paczkę zapewniającą SDK telegrama. Jej dokumentacja znajduje się tutaj:
razem z nią instalujemy niezbędny zestaw bibliotek do typescript
:
npm i telebot @types/telebot @types/node typescript ts-node
W pliku tsconfig.json
nadpisujemy następujące opcje:
"target": "ESNEXT",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
Uzyskanie TOKENU API
Aby móc korzystać z API będziemy potrzebowali tokenu. Najprostszym sposobem jego uzyskania jest napisanie na telegramie do bota tworzącego boty. Jest to BotFather
.
Cała konwersacja polega na tym, że podajemy komendę tworzącą bota, jego name
, username
i dostajemy token.
Dołączenie tokenu do projektu
Zalecam dodanie TELEGRAM_TOKEN
z tą wartością do pliku .env
np
TELEGRAM_TOKEN=xxx
W package.json
dołączamy linię
"start": "ts-node index.ts",
wewnątrz scripts
. Tworzymy plik Makefile
include .env
export
node_modules: package.json
npm i
up: node_modules
npm run start
dzięki niemu automatycznie importujemy .env
i nie musimy używać flag z linii komend ani paczek takich jak dotenv
. Nie zapomnijmy dodać .env
do .gitignore
.
Kod do uzyskania ID chatu
Jeśli chcemy, żeby nasz bot odpowiadał wystarczy w pliku index.ts
napisać kod:
import TeleBot from "telebot"
const bot = new TeleBot({
token: process.env.TELEGRAM_TOKEN || '',
});
bot.on(["/configure_bot"], (msg) => {
console.log(msg);
bot.sendMessage(msg.chat.id, `CHAT_ID: ${msg.chat.id}`);
});
bot.start();
Następnie dołączyć bota do chatu i napisać do niego. Wynik będzie następujący:
Identyfikator chatu jest kluczową informacją, jeśli chcemy wysyłać do niego powiadomienia. ID chatu i Token to kluczowe informacje mówiące jaki bot i gdzie pisze. W naszym przypadku bot był ustawiony tak, żeby różne dane wysyłać na różne grupy więc musieliśmy powtórzyć to polecenie dla kliku grup i zanotować je w pliku .env
. Do .env
dopisujemy linię
GROUP_LOG_ID=-506870285
Wysyłka sygnałów
Będziemy co sekundę wysyłać do kanału losową liczbę jeśli będzie większa niż 0.5. Wystarcz do tego kod
setInterval(() => {
const rand = Math.random();
if (rand > .5) {
bot.sendMessage(parseInt(process.env.GROUP_LOG_ID || ''), `${rand}`)
}
}, 1000)
To był bardzo prosty kod i bardzo prosty bot. Z takimi botami można robić praktyczne rzeczy. Np:
- Budować tekstowy interfejs do zdalnej konfiguracji systemu. Takie CLI jest tańsze niż podłączanie frontendu, formularzy i przycisków.
- Budować systemy powiadamiające o zdarzeniach. Jest to łatwiejsze niż wysyłka SMS, czy Emaili do których wymagani (albo zalecani) są zewnętrzni dostawcy. W telegramie ominęliśmy problem płatności za wiadomości, a grupy mogą mieścić setki tysięcy członków.
Other articles
You can find interesting also.
Scraping Rejestru Aptek
Administratorzy danych go nienawidzą. Zobacz jak wpisując dwa polecenia w konsolę pobrał rejestr wszystkich aptek w Polsce.
Daniel Gustaw
• 7 min read
CodinGame: Sztuka ASCI - Rust, NodeJs - Ciągi, Tablice, Pętle
Rozwiązywanie tej zagadki uczy, jak zarządzać ciągami znaków i arytmetyką tablic. Dowiesz się, jak podzielić ciąg na oddzielne części i połączyć je w nowy. Możesz używać indeksów tablic.
Daniel Gustaw
• 9 min read
Jeszcze jedna instrukcja instalacji Arch Linux (i3)
Instalacja Arch Linux za każdym razem uczy mnie czegoś nowego na temat dysków, sieci, systemów operacyjnych. Polecam Ci ją jeśli chcesz mieć system skrojony pod Twoje wymagania.
Daniel Gustaw
• 15 min read