IT/ENG
This Telegram bot has the same structure of this project which is an userbot I made for several features I needed.
So this bot has some commands in common with that userbot but also other new commands and obviously there aren't those commands that a bot can't execute but a userbot can.
So if you're interested you can also visit that repository.
Feel free to contribute and improve the project.
See more details on How to contribute here.
After the Italian section you will find an english version of the README. In doc
folder you will find a bit of documentation of RobBot.
Per un corretto funzionamento è necessario compilare a dovere il file config.json
. Quindi è necessario essere in possesso dei seguenti dati:
- Api keys di Telegram:
api_id
eapi_hash
. Puoi generarle da qui - Bot token:
bot_token
. Puoi generarlo da qui - Api url atm se si vogliono usare le loro api:
api_url
,api_get
ecookie
. (Non essendo pubbliche non le condividerò) - Api key di OpenWeatherMap:
api_weather
. Puoi generare la tua key dal sito principale di OpenWeatherMap - Api di OpenAI:
api_openai
. Puoi generare la tua key dal sito principale di OpenAI - Unsplash Access Key:
unsplash_key
. Puoi generare la tua personale creando un'applicazione su unsplash.com - I dati telegram dell'amministratore del bot:
id_super_admin
. - Il percorso dove si trova il file .db:
path_db
. - Nome della sessione:
session_name
. - I nomi dei comandi utente, admin e superadmin:
user_commands
,admin_commands
esuper_admin_commands
.
I dati del super admin servono a colui che potrà usare le funzioni di interazione con il database e altre funzioni particolari.
I nomi dei comandi da inserire nel config.json
possono essere ricopiati dal codice oppure possono essere modificati sul codice e poi ricopiati nel file json.
Se siete su un'ambiente totalmente a linea di comando e vi accedete in ssh, consiglio il seguente comando per avviare il bot:
python3 app.py 2>&1 > /dev/tty1 &
Il funzionamento dei comandi utente è spiegato all'interno del file help.json
. Si tratta del file che viene usato dal bot per rispondere al comando /helprob <nome comando>
.
Le spiegazioni sono in Italiano, ma volendo si possono tradurre in qualsiasi lingua sostituendo i campi della struttura dati oppure addirittura renderlo multilingua, ma in quel caso c'è da sviluppare la componente che rende possibile il cambio di lingua.
- registrare un nuovo utente:
/setrobuser
<id_utente> - registrare un nuovo admin:
/setrobadmin
<id_utente> - cancellare un utente:
/delrobuser
<id_utente> - revocare i privilegi admin:
/delrobadmin
<id_utente> (l'utente sarà comunque ancora tra i registrati ma senza i poteri admin) - mostrare tutti gli utenti registrati:
/listrobuser
- mostrare il numero di utenti registrati:
/allrobuser
- verificare se il bot è online:
/pingrob
- registrare un nuovo gruppo come unico autorizzato a ricevere un certo comando:
/setgroup
<id_gruppo> - cancellare un gruppo salvato:
/delgroup
<id_gruppo> - mostrare tutti i gruppi salvati:
/listgroup
- modificare un valore nelle statistiche di un utente per un certo comando:
/updatestat
<id_utente> 'comando' <nuovo_valore> - cancellare un comando dalle statistiche di un utente:
/delstat
<id_utente> 'comando' - Aggiornare i dati Telegram di un utente(nome e username):
/updaterobuser
<id_utente> (oppure dando lo username) - Aggiornare il credito di un utente per l'utilizzo di openai:
/amount
<id_utente> - Visualizzare l'elenco degli utenti che hanno del credito di utilizzo per openai:
/allamounts
- Riavviare il bot direttamente da Telegram senza passare dalla shell:
/restart
- Inviare un messaggio a un utente registrato:
/say
; 'messaggio'
- Pyrogram
- tgcrypto
- peewee
- utils_config
- geopy
- bs4
- wikipedia
- pandas
- matplotlib
- openai
- urbandictionary
- pdf2image
- pytube
- flightradar24
- FlightRadarAPI
- pokebase
- wikipediaapi
- Pyrogram
- OpenWeatherMap
- Covid19 dati Italiani sui casi
- Covid19 dati Italiani sui vaccini
- Geopy
- Wikipedia wrapper
- Another Wikipedia wrapper
- Peewee
- wttr.in
- OpenAI
- Urban Dictionary
- Tper open data
- TrainMonitor per le API viaggiatreno (Queste API non sono pubbliche, non abusate del servizio)
- Trenitalia-API di SimoDax per le API frecce.it (Queste API non sono pubbliche, non abusate del servizio)
- Piste Kart Italia(scraping)
- Open Trivia Database
- Sito pmi.it per calcolo stipendio netto in Italia(scraping)
- Api Mathjs
- The cat api
- Dog ceo api
- Random fox api
- Free LaTeX api
- Free api per immagini randomiche
- Sito web di Passport Index(scraping)
- Bollettini criticita idrogeologica di open data Sicilia
- Dati sui comuni italiani di open data Sicilia
- Nasa apod API
- BGG API
- flightradar24
- FlightRadarAPI
- Joke API
- PokeAPI Python wrapper
The correct way to setup this bot is to compile the file config.json
. So it's necessary to have these data:
- Telegram api keys:
api_id
eapi_hash
. You can generate them here - Telegram bot token:
bot_token
. You can generate it from here - Atm api url if you wanna use their api:
api_url
,api_get
andcookie
. (The api are not public so I won't share them here) - OpenWeatherMap api key:
api_weather
. You can generate your key from the OpenWeatherMap website. - OpenAI api key:
api_openai
. You can generate your key from the OpenAI website. - Unsplash Access Key:
unsplash_key
. You can generate yours by creating an application on unsplash.com - Telegram data of the owner of the bot:
id_super_admin
. - The path where is the .db file:
path_db
. - The session name:
session_name
. - Name of user commands, admin commands and super admin commands:
user_commands
,admin_commands
esuper_admin_commands
.
Data of super admin is needed because he's the only one who can use db functions and other special functions.
Name of commands to put inside config.json
can be copied from source code or renamed inside source code and then copied in json file.
The features of the user commands are explained inside help.json
. It is the file which is used by the bot to reply at /helprob <command name>
.
This json file is only in Italian, but you can translate it in every languages by changing the correct fields with your translations or even making the bot multi-language but in that case you have to develop the component for change the language runtime.
If you're in a command-line env and you access with ssh, I suggest the following command to start the bot:
python3 app.py 2>&1 > /dev/tty1 &
- register a new user:
/setrobuser
<id_user> - register a new admin:
/setrobadmin
<id_user> - delete a user:
/delrobuser
<id_user> - delete an admin:
/delrobadmin
<id_user> (it will just revoke the admin power, it doesn't delete the user) - How to list all user registered:
/listrobuser
- How to show ho many users are registered:
/allrobuser
- check if the bot is online:
/pingrob
- Save a new group to make it the only one authorized to receive a specific command:
/setgroup
<id_group> - Delete a saved group:
/delgroup
<id_group> - Show all saved groups:
/listgroup
- Update a value in a user's stat for a specific command:
/updatestat
<id_user> 'command' <new_value> - Delete a command from a user's stat:
/delstat
<id_user> 'command' - Update user's Telergam data(name and username):
/updaterobuser
<id_user> (or giving username) - Update the user's credit for openai usage:
/amount
<id_user> - Show all user and their openai credit:
/allamounts
- Restarting the bot directly in Telegram without manually doing in shell:
/restart
- Sending a message to a registered user:
/say
<id_user> ; 'message'
- Pyrogram
- tgcrypto
- peewee
- utils_config
- geopy
- bs4
- wikipedia
- pandas
- matplotlib
- openai
- urbandictionary
- pdf2image
- pytube
- flightradar24
- FlightRadarAPI
- pokebase
- wikipediaapi
- Pyrogram
- OpenWeatherMap
- Covid19 cases Italian data
- Covid19 vaccine Italian data
- Geopy
- Wikipedia wrapper
- Another Wikipedia wrapper
- Peewee
- wttr.in
- OpenAI
- Urban Dictionary
- Tper open data
- TrainMonitor for viaggiatreno API (These API aren't public, don't abuse the service)
- SimoDax's wiki for frecce.it API (These API aren't public, don't abuse the service)
- Piste Kart Italia(scraping)
- Open Trivia Database
- pmi.it website to calculate Italian net salary(scraping)
- Api Mathjs
- The cat api
- Dog ceo api
- Random fox api
- Free LaTeX api
- Free api for random images
- Passport Index Web Site(scraping)
- Open data about extreme forecast event by open data Sicilia
- Open data about italian municipalities by Open data Sicilia
- Nasa apod API
- BGG API
- flightradar24
- FlightRadarAPI
- Joke API
- PokeAPI Python wrapper