Introduzione
Forse uno dei problemi maggiori di una community presente sia su Telegram che su Discord, è quello di avere due chat completamente separate e spesso, anche utenti diversi sulle due app! Questo perché non esiste nativamente nessun modo per collegarle fra di loro.Facendo le dovute ricerche, è possibile collegare queste due applicazioni in diversi modi, il problema è che la maggior parte richiedono di sottoscrivere un abbonamento con un costo che varia in base ai messaggi mensili inviati, molto scomodo per community numerose o con utenti molto attivi!
Oltre alle soluzioni "impacchettate e pronte all'uso" ne esistono altre, che prevedono l'uso di bot creati direttamente da noi e personalmente hostati (che è quello che ci piace... pieno controllo!), naturalmente in questo caso, gratuite e il più delle volte open-source.
Recentemente abbiamo collegato le nostre chat di Discord e Telegram sfruttando proprio una di queste soluzioni, ovvero Tedicross, un bot self-hosted, quindi non pubblico.
Di seguito, vediamo come fare e di cosa abbiamo bisogno.
Prerequisiti
- Essere il fondatore di un server Discord (o possedere tutti i diritti di amministrazione)
- Essere il fondatore di un gruppo Telegram (o possedere tutti i diritti di amministrazione)
- Avere a disposizione una macchina sempre connessa capace di girare NodeJS 16 o superire
Preparazione
Come fatto per altre guide, potendo scegliere fra diverse piattaforme, in questa guida prenderemo come esempio l'installazione su un server Debian. Con i dovuti accorgimenti, naturalmente si può seguire altre per altri OS.Intanto, la pagina ufficiale di GitHub spiega in modo esaustivo come installare Tedicross, quindi una rapida lettura aiuta a comprendere meglio i passaggi indicati di seguito: GitHub - TediCross/TediCross: Bot which bridges Telegram chats with Discord channels
Per prima cosa, operiamo sulla nostra macchina Debian, e DOPO averla protetta a dovere (qui una guida) dobbiamo installare NodeJS.
La versione indicata è la 16, quindi intanto inseriamo la corretta repository
Bash:
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
Bash:
sudo apt -y install nodejs
Ci servirà anche il pacchetto npm
Bash:
sudo apt -y install npm
E la macchina è pronta! Ora, lasciamo da parte il nostro server e recuperiamo tutte le informazioni aggiuntive che ci serviranno.
Ora dobbiamo creare un bot Telegram, creare un bot Discord, ottenere i loro token e recuperare gli ID delle chat da collegare. Procediamo per gradi:
Per creare un bot Telegram, dobbiamo avviare una chat con BotFather. Quindi semplicemente cerchiamolo su Telegram
![Immagine 2022-10-22 110112.jpg Immagine 2022-10-22 110112.jpg](https://italianerd.com/data/attachments/0/22-0c9fc49da603abbab193d8e37ab631a8.jpg?hash=8s-P3lUfed)
Aperta la chat con BotFather, digitiamo /newbot e seguiamo le istruzioni per la creazione, molto intuitive. Appena creato, otterremo il token del nostro bot, salviamolo e conserviamolo in un luogo sicuro! Chiunque possegga il token può controllare il bot.
Dobbiamo ora disattivare la privacy mode del nostro bot, quindi sempre nella chat di BotFather scriviamo /setprivacy e disattiviamola.
Volendo possiamo già invitare il bot nel gruppo telegram che vogliamo collegare, garantendogli diritti amministrativi.
Per ottenere l'ID del nostro gruppo telegram, che ci servirà in seguito, la via più semplice è invitare nel gruppo un altro bot (che poi possiamo eliminare). Lo username da invitare è myidbot. Invitiamolo e otteniamo il nostro groupid.
Passiamo ora al bot Discord:
Rechiamoci su Discord Developer Portal — API Docs for Bots and Developers e creiamo una nuova applicazione tramite l'interfaccia intuitiva. Una volta creata, vedremo la schermata Bot
![bot.jpg bot.jpg](https://italianerd.com/data/attachments/0/23-f5c48333239dc36f25708b2eb6bc583c.jpg?hash=zRbsd4KWDI)
Apriamola e creiamo un nuovo bot, indicando le informazioni necessarie. Anche qui, salviamo il token fornito e conserviamolo in un posto sicuro.
Nella schermata del bot, sotto Privileged Gateway Intent selezioniamo la voce Message Content Intent.
Possiamo invitare il bot nel nostro server discord. Per farlo, andiamo nella schermata OAuth2, poi URL Generator
![url.jpg url.jpg](https://italianerd.com/data/attachments/0/24-14a605db88368c9a2f2885fb8b077574.jpg?hash=kPgEFTQhG3)
e nella finetra a destra clicchiamo bot poi Administrator. In basso si genererà un url, apriamolo in una nuova finestra e confermiamo l'aggiunta del bot al nostro server.
Per ottenere l'id del canale discord di nostro interesse, dobbiamo prima andare nelle impostazioni del nostro profilo tramite l'app di discord, in basso troviamo avanzate
![disc.jpg disc.jpg](https://italianerd.com/data/attachments/0/25-f156f4f9c02a4f79ee57eef95e9ee364.jpg?hash=QLE2-6e3YA)
e quindi attiviamo la modalità sviluppatore.
Ora, con la modalità sviluppatore attiva, clicchiamo con il tasto destro sul canale di nostro interesse e ci verrà fornita l'opzione di copiare l'ID del canale.
Bene! abbiamo ora tutto il necessario per procedere all'installazione del bot sul nostro server!
Installazione
La prima cosa, è scaricare Tedicross dal Github, volendo anche in formato zip e poi scompattarlo all'interno del nostro server, consiglio una directory utente in /home.Navighiamo tramite terminale in questa directory e digitiamo
Bash:
npm install --omit=dev
Una volta installato, facciamo una copia del file example.settings.yaml e rinominiamolo in settings.yaml.
Ora apriamo settings.yaml e completiamolo con tutti i dati ottenuti nei passaggi precedenti. Controlliamo anche le altre impostazioni intuitive all'interno del file e personalizziamole in base alle nostre esigenze.
Volendo, possiamo già avviare il bot per verificarne il funzionamento con
npm start
Possiamo inoltre impostare un autostart per il bot, in modo che si avvia automaticamente ad ogni riavvio della macchina come servizio.
Per farlo, dobbiamo creare un file all'interno della cartella /etc/systemd/system/ con il nome che vogliamo dare al servizio, ad esempio
Bash:
nano /etc/systemd/system/tedicross.service
All'interno del file, copiamo questo contenuto
Codice:
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/TediCross
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=tedicross
User=tedicross
Group=tedicross
Environment=TELEGRAM_BOT_TOKEN=secret
Environment=DISCORD_BOT_TOKEN=secret
[Install]
WantedBy=multi-user.target
Ora, abilitiamo il servizio al riavvio con
Bash:
sudo systemctl enable tedicross
Bash:
sudo systemctl start tedicross
Abbiamo finito! Se tutto è stato settato correttamente, le chat dovrebbero essere collegate e ogni messaggio inviato in una di essere, sarà recapitato anche nell'altra secondo le regole inserite nel file settings.yaml.
Volendo possiamo creare semplicemente anche un bridge fra più canali discord e gruppi telegram diversi, sul GitHub di Tedicross è indicato come farlo, in modo molto semplice.
Spero questa guida vi sia piaciuta, fatemi sapere cosa ne pensate!