Samus Aran
Samus Aran è un Bot basato su uzzbot (il quale era già basato su telegram-bot), scritto in Lua con modifiche da parte di Casa con lo scopo di amministrare gruppi e supergruppi.
Privilegi
Samus usa, come altri bot, un sistema di autorizzazioni con funzioni e accessi diversificati.
Utente
Alla base di tutto c'è l'utente comune, l'user guest, a lui sono accessibili solo i comandi riservati a tutti, non può svolgere funzioni amministrative e può essere ulteriormente limitato in un gruppo con il comando !whitelist modonly enable
.
Moderatore
È la figura amministrativa base, viene automaticamente nominato in questa lista la persona che invita Samus nel gruppo.
È valido solo nel gruppo di appartenenza, ha accesso a tutti i comandi amministrativi e può nominare altri moderatori con !promote <@username>
o #promote
da reply.
Admin
Può essere nominato solo da un sudo, può accedere ad alcune funzioni riservate ed è moderatore di qualsiasi gruppo.
Sudo
I sudo sono gli utenti con i privilegi massimi, possono accedere ad ogni funzionalità. Un sudo non può nominare altri sudo, per diventare sudo bisogna aggiungere il proprio ID manualmente nella configurazione del bot stesso.
Comandi
Samus è in grado di eseguire vari comandi, sia di moderazione/amministrazione che, anche se meno usati, di svago/utilità.
Qui sono raccolti tutti i plugin a cui Samus ha accesso:
9gag
Con il comando !9gag
è possibile ricevere un immagine casuale dal portale 9GAG.
Comando | Descrizione | Privilegi |
---|---|---|
!9gag | Invia il proprio ID | Tutti |
anti-flood
Permette di rimuovere automaticamente gli utenti che superano un certo numero di messaggi in un tempo stabilito.
Appena aggiunto il bot al gruppo l'opzione è disabilitata, la si può abilitare con !anti-flood enable
e di fabbrica è settato a un limite di 5 messaggi in 5 secondi.
Il limite di messaggi può essere modificato con !antiflood maxmsg <num_msg>
mentre il tempo può essere modificato con !antiflood timeframe <seconds>
, per vedere la configurazione utilizzata si può usare !antiflood status
.
Si possono aggiungere eccezioni, ovvero utenti che possono sforare il limite di flood senza conseguenze, con il comando !antiflood addexcept/delexcept <user_id>
oppure con #addexcept
e #delexcept
via reply all utente interessato.
Comando | Descrizione | Privilegi |
---|---|---|
!antiflood enable/disable | Abilita/Disabilita l' anti-flood | Moderatore o sup. |
!antiflood addexcept/delexcept <user_id> | Aggiungere/Rimuovere un utente dalle eccezioni. | Moderatore o sup. |
!antiflood status | Stampa la configurazione dell anti-flood (mes/temp) | Moderatore o sup. |
!antiflood maxmsg <num_msg> | Setta il numero di messaggi massimi prima di far scattare l'anti-flood | Moderatore o sup. |
!antiflood timeframe <seconds> | Setta il tempo massimo prima di far scattare l'anti-flood | Moderatore o sup. |
#addexcept | Aggiungi utente alle eccezioni (Tramite Reply) | Moderatore o sup. |
#delexcept | Rimuovi utente dalle eccezioni (Tramite Reply) | Moderatore o sup. |
antispam
Permette di rimuovere automaticamente tutti gli utenti che condividono determinati link, nei supergruppi elimina anche il messaggio di spam, i collegamenti rimossi sono quelli: Telegram (privati e pubblici), adf.ly e sh.st.
Appena aggiunto il bot al gruppo l' opzione è disabilitata, la si può abilitare con !antispam enable
.
La lista nera dei link, non può essere modificata, ma si possono aggiungere eccezioni, ovvero utenti che possono condividere link senza conseguenze, con il comando !antispam addexcept/delexcept <user_id>
oppure con #addspamexcept
e #delspamexcept
via reply all utente interessato.
Comando | Descrizione | Privilegi |
---|---|---|
!antispam enable/disable | Abilita/Disabilita l' anti-spam | Moderatore o sup. |
!antispam addexcept/delexcept <user_id> | Aggiungere/Rimuovere un utente dalle eccezioni. | Moderatore o sup. |
#addspamexcept | Aggiungi utente alle eccezioni (tramite reply) | Moderatore o sup. |
#delspamexcept | Rimuovi utente dalle eccezioni (tramite reply) | Moderatore o sup. |
banhammer
Il plugin banhammer è quello che si occupa dell'amministrazione.
I comandi base sono:
!kickme
che serve a farsi bannare dal gruppo ed è l'unico comando utilizzabile da tutti.
!kick <@user/ID>
che serve a cacciare un utente tramite ID o UserName, si può utilizzare anche via reply con #kick
, nei supergruppi il comando kick equivale al comando ban.
!ban user <@user/ID>
come il comando kick, serve per rimuovere un utente, inoltre rende il kick permanente (perciò l'utente se rientra viene automaticamente rimosso), la versione reply del comando è #ban
.
Per rimuovere il ban si può usare !ban delete <ID>
oppure da reply #unban
.
!superban user <@user/ID>
come il comando ban, ma è valido su tutti i gruppi dove samus è admin, il comando è riservato agli amministratori del bot, attualmente Casa e Len.
È possibile disabilitare i superban in un gruppo, per permettere anche alle persone bannate globalmente di entrare.
Il comando per effettuare tale operazione è !superban <enable>/<disable>
Infine abbiamo il comando !whitelist modonly <enable/disable>
che permette di bloccare/sbloccare tutti i comandi di samus agli utenti normali, perciò rende i comandi pubblici usabili solo ai moderatori o sup.
Comando | Descrizione | Privilegi |
---|---|---|
!kickme | Esci dal gruppo | Tutti |
!whitelist modonly enable | Abilita il blocco all'uso dei comandi ai non mod | Mod o sup. |
!whitelist modonly disable | Disabilita il blocco all'uso dei comandi ai non mod | Mod o sup. |
!kick <@user/ID> | Caccia un utente | Mod o sup. |
#kick | Caccia un utente (via reply) | Mod o sup. |
!ban user <@user/ID> | Banna un utente | Mod o sup. |
!ban delete <@user/ID> | Sbanna un utente | Mod o sup. |
#ban | Banna un utente (via reply) | Mod o sup. |
#unban | Sbanna un utente (via reply) | Mod o sup. |
!superban user <@user/ID> | SuperBanna un utente | Admin o sup. |
!superban delete <ID> | SuperSbanna un utente | Admin o sup. |
!superban <enable>/<disable> | Abilita/Disabilita i SuperBan su un gruppo | Mod o sup. |
#superban | SuperBanna un utente (via reply) | Admin o sup. |
boobs
Uno dei plugin NSFW, permette di ricevere immagini di seni con !boobs
e immagini di sederi con !butts
.
Comando | Descrizione | Privilegi |
---|---|---|
!boobs | Invia foto di seni (NSFW) | Tutti |
!butts | Invia foto di sederi (NSFW) | Tutti |
danbooru
Sulla strada dei plugin NSFW permette di ricevere un immagine casuale dal sito Danbooru con l'omonimo comando !danbooru
Comando | Descrizione | Privilegi |
---|---|---|
!danbooru | Invia un immagine casuale da Danbooru (NSFW) | Tutti |
!danboorud | Invia un immagine casuale tra le più viste del giorno (NSFW) | Tutti |
!danbooruw | Invia un immagine casuale tra le più viste della settimana (NSFW) | Tutti |
!danboorum | Invia un immagine casuale tra le più viste del mese (NSFW) | Tutti |
delmsg
Permette di eliminare un messaggio via reply sui supergruppi, tramite il comando #delmsg
.
Comando | Descrizione | Privilegi |
---|---|---|
#delmsg | Elimina un messaggio (via reply) (solo sui supergruppi) | Mod o sup. |
eurusd
Comunica il cambio euro/dollaro tramite il comando !eurusd
Comando | Descrizione | Privilegi |
---|---|---|
!eurusd | Comunica il cambio euro/dollaro | Tutti |
!eurusd <cifra> <EUR/USD> | Effettua il cambio da euro a dollari e viceversa | Tutti |
groupmanager
Il plugin groupmanager come quello banhammer si occupa dell'amministrazione. I comandi base sono:
!creategroup <group_name>
che permette di creare nuovi gruppi, ma è riservato agli amministratori.
!setabout <description>
e !about
che permettono rispettivamente di settare e vedere la descrizione del gruppo.
I comandi !setrules <rules>
e !rules
hanno le stesse funzioni dei comandi precedenti solo con le regole.
!setname <new name>
e !setimage
permettono rispettivamente di modificare il nome o l'immagine del gruppo.
!group <lock|unlock> <name|photo|member>
permette di bloccare il nome, l'immagine o i membri, in quest'ultimo caso i nuovi utenti verranno rimossi.
Comando | Descrizione | Privilegi |
---|---|---|
!creategroup <group_name> | Crea un nuovo gruppo | Admin o sup. |
!setabout <description> | Setta la descrizione | Mod o sup. |
!about | Mostra la descrizione | Tutti |
!setrules <rules> | Setta le regole | Tutti |
!rules | Mostra le regole | Tutti |
!setname <new_name> | Cambia il nome del gruppo | Mod o sup. |
!setphoto | Cambia foto del gruppo | Mod o sup. |
!group lock/unlock name | Blocca/Sblocca il nome del gruppo | Mod o sup. |
!group lock/unlock photo | Blocca/Sblocca l'immagine del gruppo | Mod o sup. |
!group lock/unlock member | Blocca/Sblocca il numero degli utenti | Mod o sup. |
hello
Questo comando molto semplice permette di far salutare qualcuno al bot tramite il comando say hello to <name>
Comando | Descrizione | Privilegi |
---|---|---|
say hello to <name> | Saluta una persona | Tutti |
help
È il comando aiuto, elenca tutti i plugin con !help
e con !help all
mostra anche i relativi comandi seguiti da una descrizione in inglese.
Comando | Descrizione | Privilegi |
---|---|---|
!help | Mostra la lista dei comandi | Tutti |
!help all | Mostri i comandi di ogni plugin (con descrizione) | Tutti |
!help <plugin name> | Mostra i comandi di un singolo plugin (con descrizione) | Tutti |
!help <number> | Mostra i comandi di un singolo plugin (con descrizione) | Tutti |
hydra
Questi comandi sono riservati ai fedeli dell hydra, con !hailhydra
è possibile glorificare l'hydra, con !ruleshydra
è possibile vedere le regole dei fedeli.
Comando | Descrizione | Privilegi |
---|---|---|
!hailhydra | Glorifica l'hydra | Tutti |
!ruleshydra | Mostra i 10 comandamenti dei fedeli | Tutti |
id
È possibile riceve l'ID di un utente, anche non presente nel gruppo usando il comando !id <@username>
oppure usando il comando #id
in risposta a un messaggio inviato dall'utente interessato.
Con !id
è possibile ricevere le proprie informazioni.
Con !ids chat
è possibile stampare tutti gli ID degli utenti in un gruppo, anche in privato se si è almeno moderatori del gruppo/supergruppo in questione. È necessario avere l'ID prima di utilizzare quest'ultima funzione, lo si può ottenere con !id
, inviato nel gruppo del quale si vuole la lista.
Comando | Descrizione | Privilegi |
---|---|---|
!id | Invia il proprio ID | Tutti |
!id <@username> | Invia l'ID dell'utente teamite username | Tutti |
#id | In risposta al messaggio dell'utente interessato da l'ID | Tutti |
!ids chat | Stampa gli ID degli utenti nel gruppo | Tutti |
!ids chat channel#id<id del supergruppo> | Stampa gli ID degli utenti nel supergruppo (anche in privato) | Mod o sup. |
!ids chat chat#id<id del gruppo> | Stampa gli ID degli utenti nel gruppo (anche in privato) | Mod o sup. |
imdb
Con il comando !imdb <movie>
è possibile cercare film sul noto database IMDB
Comando | Descrizione | |
---|---|---|
!imdb <movie> | Cerca un film su IMDB | Tutti |
join
Con il comando !join <invite link>
gli amministratori del bot possono far joinare il bot in un gruppo a partire dal link, questo comando è utilizzabile solo con i link privati
Comando | Descrizione | |
---|---|---|
!join <invite link> | Aggiunge Samus a un gruppo tramite link | Admin o sup. |
location
Con il comando !loc <città>
è possibile ricevere un link da google maps con le cordinate della città e uno screenshoot dello stesso.
Comando | Descrizione |
---|---|
!loc <città> | Invia le informazioni di geolocalizzazione di una città |
meme
Questo plugin permette di creare meme a partire da una lista di circa 1134 immagini, la lista può essere esplorata con il comando !meme list
che vi darà come output un link hastebin, è possibile cercare l'immagine desiderata manualmente (tramite il sito) oppure con il comando !meme search <parola chiave>
.
Una volta scelta l'immagine che fà più per noi, si usa il comando !meme <parola chiave> - <testo superiore> - <testo inferiore>
o con !meme <parola chiave> “<testo superiore>” “<testo inferiore>”
Comando | Descrizione | |
---|---|---|
!meme search <parola chiave> | Cerca un immagine base per meme | Tutti |
!meme list | Mostra la lista delle immagini base | Tutti |
!meme listall | Mostra la lista di tutti i meme | Admin o sup. |
!meme <parola chiave> - <testo superiore> - <testo inferiore> | Genera un meme con la pic e il testo richiesto | Tutti |
!meme <parola chiave> “<testo superiore>” “<testo inferiore>” | Genera un meme con la pic e il testo richiesto | Tutti |
moderation
Questo plugin si occupa di alcune impostazioni di moderazione e di aggiungere/rimuovere i moderatori.
Con !promote <@username>
è possibile aggiungere un nuovo moderatore mentre con !demote <@username>
per demotarne uno.
Si possono usare via reply anche #promote
e #demote
.
Con !modlist
viene mostrata la lista dei moderatori.
Con !modadd
è possibile aggiungere il gruppo tra i moderati, cosa che accade automaticamente appena aggiunta samsus, mentre con !modrem
si può rimuovere il gruppo dai moderati.
Comando | Descrizione | Privilegi |
---|---|---|
!promote <@username> | Aggiungi un moderatore | Mod o sup. |
!demote <@username> | Rimuovi un moderatore | Mod o sup. |
#promote | Aggiungi un moderatore (via reply) | Mod o sup. |
#demote | Rimuovi un moderatore (via reply) | Mod o sup. |
!modlist | Mostra la lista dei moderatori | Tutti |
!modadd | Aggiunge un gruppo alla moderazione | Mod o sup. |
!modrem | Rimuove un gruppo dalla moderazione | Mod o sup. |
music
Con il comando !music <nome>
è possibile ricevere i link per il download di una canzone.
Comando | Descrizione | Privilegi |
---|---|---|
!music <nome> | Invia i link per il download della canzone | Tutti |
mute
Questo plugin permette nei supergruppi di mutare gli utenti, eliminando tutti i loro nuovi messaggi.
Con il comando !mute user <@username/ID>
è possibile mutare un utente invece con !mute delete <@username/ID>
per smutarne uno, in alternativa si possono usare anche #mute
e #unmute
da reply.
Infine con il comando !mute all
è possibile mutare tutti esclusi i moderatori e con il comando !mute undo
smutare tutti.
Comando | Descrizione | Privilegi |
---|---|---|
!mute user <@username/id> | Muta un utente | Mod o sup. |
!mute delete <@username/id> | Smuta un utente | Mod o sup. |
#mute | Muta un utente (via reply) | Mod o sup. |
#unmute | Smuta un utente (via reply) | Mod o suo. |
!mute all | Muta tutti (esclusi mod o sup.) | Mod o sup. |
!mute undo | Smuta tutti | Mod o sup. |
plugins
Con il comando !plugins enable <plugin> chat
o !plugins disable <plugin> chat
è possibile abilitare o disabilitare un determinato plugin nel gruppo.
Comando | Descrizione | Privilegi |
---|---|---|
!plugins disable <plugin> chat | Disabilita un plugin nel gruppo | Mod o sup. |
!plugins enable <plugin> chat | Abilita un plugin nel gruppo | Mod o sup. |
pokedex
Con !pokedex <name/id>
con nome o id del pokemon, come output vi darà le informazioni di quel pokemon, come il pokedex.
Comando | Descrizione | Privilegi |
---|---|---|
!pokedex <name/id> | Ricevi le informazioni su un pokemon | Tutti |
roll
Con !roll <numero di dadi>d<numero di facce>
darà un numero casuale generato lanciando degli ipotetici dadi.
Un po' come fa Dice Bot.
Comando | Descrizione | Privilegi |
---|---|---|
!roll <numero di dadi>d<numero di facce> | Tira un dado virtuale | Tutti |
rss
In scrittura…
sos
Il comando !sos
restituisce il link del gruppo di supporto.
Comando | Descrizione | |
---|---|---|
!sos | Restituisce il link del gruppo di supporto | Tutti |
stats
Con !stats
permette di vedere una statistica minimale, ordinata in base al numero di messaggi scritti dagli utenti.
È possibile eseguire anche il comando da remoto con l'ID del gruppo con !stats chat <id>
.
Infine !stats bot
mostra le statistiche globali, ma è accessibile solo al sudo.
Comando | Descrizione | Privilegi |
---|---|---|
!stats | Mostra le statistiche del gruppo | Tutti |
!stats chat <id> | Mostra le statistiche del gruppo da remoto | Mod o sup. |
!stats bot | Mostra le statistiche del bot | Sudo |
tex
Con il comando !tex <equation>
è possibile convertire un equazione LaTeX in immagine.
Comando | Descrizione | Privilegi |
---|---|---|
!tex <equation> | Converte un equazione LaTeX in immagine | Tutti |
time
Mostra la data e ora del fuso orario scelto, con il comando !time <area>
Comando | Descrizione | Privilegi |
---|---|---|
!time <area> | Mostra la data e ora del fuso orario scelto | Tutti |
ud
Tramite il comando !ud <term>
è possibile ottenere la descrizione del termine <term> da Urban Dictionary
Comando | Descrizione | Privilegi |
---|---|---|
!ud <term> | Mostra la descrizione del temine su Urban Dictionary | Tutti |
version
Il comando !version
mostra la versione del bot e alcune informazioni riguardo licenza e sorgenti.
Comando | Descrizione | Privilegi |
---|---|---|
!version | Mostra la versione del bot | Tutti |
weather
Con !weather <city>
è possibile vedere il meteo in una città.
Comando | Descrizione | Privilegi |
---|---|---|
!weather <city> | Vedi il meteo di una città | Tutti |
webshot
Con il comando !webshot <URL>
è possibile avere lo screenshot di un determinato sito.
Comando | Descrizione | Privilegi |
---|---|---|
!webshot <URL> | Esegui lo screenshot di una pagina web | Tutti |
why
Con il comando !why <@username>/<id>
o #why
via reply si può vedere lo stato di un utente, che può essere:
- Utente non bannato o superbannato
- Utente superbannato, puoi disattivare i superban con
!superban disable
- Utente bannato (dal gruppo), puoi sbannarlo con
!ban delete <ID>
Comando | Descrizione | Privilegi |
---|---|---|
!why <@username>/<id> | Vedi lo stato di un utente | Tutti |
#why | Vedi lo stato di un utente (by reply) | Tutti |
wiki
Con !wiki <text>
è possibile leggere un estratto di Wikipedia in lingua originale, con !wiki<lang> <text>
è possibile leggere estratti da Wikipedia nella lingua desiderata.
Con !wiki search <text>
è possibile cercare articoli su Wikipedia, con !wiki<lang> search <text>
si può cercare su Wikipedia nella lingua desiderata.
Comando | Descrizione | Privilegi |
---|---|---|
!wiki <text> | Ottieni un estratto da Wikipedia in EN | Tutti |
!wiki<lang> <text> | Ottieni un estratto da Wikipedia nella lingua desiderata | Tutti |
!wiki search <text> | Effettua una ricerca su Wikipedia EN | Tutti |
!wiki<lang> search <text> | Effettua una ricerca su Wikipedia nella lingua desiderata | Tutti |
xkcd
Con il comando !xkcd
si può ricevere un immagine casuale dal portale xkcd.
Se si ha l'ID dell immagine desiderata si può usare !xkcd <id>
.
Bug conosciuti
Samus Aran usa tg-cli per connettersi a telegram, questo la rende identica a un normale utente, ma non la rende esente da bug o problemi, la maggior parte dovuti allo stato di abbandono in cui si presentano i sorgenti di tg-cli stesso.
Spamban
Problema ricorrente degli utenti è la segnalazione per spam anche Samus non ne è immune, infatti può essere spambannata dai gruppi pubblici. Questo significa che Samus non potrebbe scrivere sui gruppi pubblici, ma neanche bannare, cambiare il titolo e altro.
Per ovviare a questo problema si può usare la versione API.
Il bug dei 200+
Samus non riceve i messaggi da gruppi con più di 200 membri in quanto, per risparmiare banda, Telegram non recapita più i messaggi in tempo reale e di conseguenza non risponde ad alcun comando.
Per ovviare al problema si poteva aggiungere al gruppo con Samus, oldbirdbot un bot che consegna i messaggi a Samus, questo perché i bot API ricevono i messaggi in qualunque caso. Con l'introduzione della versione API il bot è stato abbandonato.
Versione API
Ad aprile inizia lo sviluppo di una versione API di Samus, a fine giugno quasi tutti i comandi sono funzionanti e il bot viene diciamo dichiarato idoneo all'uso e quindi fuori dalla fase beta. Non ci sono grandi differenze se non che questa versione non soffre del bug della consegna dei messaggi e che alcuni comandi non sono funzionanti causa limitazioni imposte ai bot API.
Cloni
Con il rilascio dei sorgenti sono ora in funzione diversi cloni e fork del codice originale. Gli stessi vengono utilizzati da Group Help e Control Panel Group per effettuare l'effettiva eliminazione dei messaggi con il loro complementare MTProto GroupHelpMaster ControlPanelGroupSupport. I sorgenti sono disponibili su github
I cloni attualmente funzionanti di Samus Aran sono: Akuma95 e Akuma95 (Api)