Mostek Telegram-IRC
Mostek łączący grupę #hackerspace-krk na Telegramie oraz kanał na IRCu z tą samą nazwą.
Obecny opiekun: Michał Zagórski
Obraz dockerowy: mzagorskadm/hskrk-lelegram na https://hub.docker.com/ - Dockerfile{F59334}
Notka: Na dzień 29.02.2020r. , obraz na hubie jest nieco zmodyfikowany względem oryginalnego kodu.
Budowanie projektu
Projekt jest budowany z kodu źródłowego udostępnionego na hswaw: https://gerrit.hackerspace.pl/plugins/gitiles/hscloud/+/refs/heads/master/personal/q3k/lelegram/. Klonujemy całe repozytorium hscloud.
W katalogu głównym repozytorium uruchamiamy:
. env.sh bazel build //personal/q3k/lelegram
Wynikowa binarka znajduje się w lokalizacji bazel-bin/personal/q3k/lelegram/linux_amd64_stripped/lelegram
Byłem leniwy, więc używałem oficjalnego obrazu dockerowego Bazela do budowania:
docker run -it -v $(pwd):/src/workspace:rw \ -v /tmp/build_output:/tmp/build_output:rw \ -w /src/workspace \ --entrypoint=/bin/bash \ l.gcr.io/google/bazel:latest
Przygotowanie środowiska
Potrzebujemy:
- Zarejestrowany bot po stronie Telegrama;
- Konfiguracja bota: /setjoingroups enable;
- Konfiguracja bota: /setprivacy disable;
- API Token;
- GroupId grupy, w której ma być mostek;
- Kanał na ircu.
Uruchomienie
Uruchamiamy z argumentami:
./lelegram -irc_server irc.libera.chat:6667 \ -hspki_disable \ -irc_channel <kanał na ircu z hashami, np. '#hskrk' albo \#hskrk> \ -telegram_token <auth token bota telegramowego> \ -telegram_chat <groupId> \ -irc_login <login botowego połączenia na ircu> \ -irc_max_connections <liczba maksymalnych połączeń bota na irca>
- -hskpi_disable: deaktywacja integracji z infrastrukturą k8s HSWAW.
- groupId musi być numerem, zwykle ujemnym, najłatwiej poznać groupId z webowego telegrama lub szukając w logach, które grupy ignoruje, gdy nie ma przypisanej żadnej konkretnej.
- Dodatkowe debugi dostępne z opcją -v <int> (im wyższy numer, tym więcej poziomów logowania łapie)
- Dodatkowe opcje można wyświetlić ./lelegram -help
- irc_server musi być adresem z portem dostępnym dla nieszyfrowanego połączenia, lelegram nie wspiera TLS w komunikacji z serwerem IRC
- Notka: Oryginalny bot nie wspiera opcji irc_login
Uruchomienie z dockera
W podstawowej wersji obraz uruchamia /bin/bash, więc należy go uruchomić, wywołując binarkę z argumentami:
docker run -d mzagorskadm/hskrk-lelegram /lelegram/lelegram \ -irc_server chat.freenode.net:6667 \ -hspki_disable \ -irc_channel <kanał na ircu z hashami, np. '#hackerspace-krk' albo \#hackerspace-krk> \ -telegram_token <auth token bota telegramowego> \ -telegram_chat <groupId> \ -irc_login <login botowego połączenia na ircu> \ -irc_max_connections <liczba maksymalnych połączeń bota na irca>
Potrzebne poprawki
... a także znane problemy i ograniczenia :)
- Domyślnie bot loguje się jako lelegram[t] na ircu (irc_login może być pusty);
- Nie ma obsługi dla nicków bez username (pole username w telegramie jest opcjonalne);
- Bot *prawdopodobnie* nie wyśle wiadomości, jeśli nie będzie mógł zrobić joina użytkownika (np. z powodu konfliktów nicków, braku voice na moderowanym kanale, etc.);
- Znanym problem jest wieszanie się bota po kilku dniach aktywności - należy go monitorować na bieżąco; - problem został rozwiązany przez q3k w sierpniu 2020
- Todo: warto przenieść instancję teleimg poza hswaw;
- Todo: konfigurowalny sufix/prefix do nicków ircowych - obecnie blokujemy możliwość używania więcej niż jednej instancji w jednej sieci IRC; - dodane w 2020
- Todo: ogarnąć więcej jednoczesnych połączeń - być może możemy użyć bloku IPv6 albo dogadać limit z Liberą. - aktualnie bot łączy się z hosta, który co kilka dni rotuje adres IPv6, przy czym ma już nawiązane połączenia z nowych adresów - takie rotowanie ułatwia trzymanie mniejszej liczby ostatnio używanych połączeń
- Obsługa wielu wiadomości/długich wiadomości - obecnie ignorujemy Excess Flood z IRCa.
do szukania: telegram, irc, телеграм, чат
- Last Author
- odisseus
- Last Edited
- Apr 13 2024, 8:46 PM