Files
tclscripts/Chanban
2026-03-09 16:48:29 +01:00
..
2026-03-09 16:48:29 +01:00
2026-03-05 20:03:01 +01:00

Read this document in:
🇬🇧 English
🇮🇹 Italian
🇵🇹 Portuguese


Channel Management

An Eggdrop script for IRC channel management. Provides ops with commands to ban, kick, voice, and manage the bot's internal ban list, with support for automatic ban tracking and multiple languages.


Requirements

  • Eggdrop 1.8+
  • Tcl 8.5+
  • msgcat package (included in Tcl's standard library)

Installation

  1. Copy cmgmt.tcl to your Eggdrop scripts/ directory.
  2. Copy the cmgmt_langs/ directory to your Eggdrop scripts/ directory.
  3. Add the following line to your Eggdrop configuration file:
source scripts/cmgmt.tcl
  1. Rehash or restart your bot.

Configuration

All configuration is done at the top of cmgmt.tcl.

Variable Default Description
locale en Language to use. Must match a file in cmgmt_langs/ (e.g. en, pt, it)
trigger @ Prefix for public commands
tBanDuration 30 Duration of temporary bans, in minutes
upCommand curl -s -F file=@- https://x0.at/ Command used to upload the ban list. Must read from stdin
banMask 2 Ban mask type used when banning a user by nick (see mask types below)
addOpMask 1 Mask type used when adding a user as op (see mask types below)
protectMasks *!*@services.ptirc.org Masks that can never be banned or kicked
noAddNicks ChanServ NickServ ChanBot Nicks to ignore when auto-adding bans
noAddMasks *!*@services.ptirc.org Masks to ignore when auto-adding bans

Ban Mask Types

Value Mask format
0 *!user@host
1 *!*user@host
2 *!*@host
3 *!*user@*.host
4 *!*@*.host
5 nick!user@host
6 nick!*user@host
7 nick!*@host
8 nick!*user@*.host
9 nick!*@*.host

Commands

Commands marked with [o] require the o (op) flag on the channel. Commands marked with [n] require the n (owner) flag globally. Commands are available both publicly in the channel (prefixed with the trigger) and privately via /msg to the bot.

Public Commands (in channel)

Command Flag Description
@addban <mask> [o] Adds a raw ban mask directly to the bot's ban list and sets it on the channel. The mask must be properly formatted (e.g. *!*@host)
@ban <nick> [o] Bans a user from the channel and adds the mask to the bot's ban list
@tban <nick> [o] Temporarily bans a user for the duration set in tBanDuration
@kick <nick> [o] Kicks a user from the channel
@voice <nick> [o] Gives voice (+v) to a user
@devoice <nick> [o] Removes voice (-v) from a user
@unban <mask> [o] Removes a ban mask from the channel and the bot's ban list
@banlist [o] Uploads the bot's ban list for the channel and posts a link
@autoadd <on/off/status> [o] Enables, disables, or checks the status of automatic ban adding
@addop <nick> [n] Adds a user as op for the channel in the bot's database
@delop <nick> [n] Removes a user's op access for the channel from the bot's database
@ops [n] Lists all ops registered for the channel in the bot's database
@opcmds [o] Lists all available commands

Private Commands (via /msg)

The syntax is the same but requires the channel to be specified as the first argument.

Command Flag Description
addban <#chan> <mask> [o] Adds a raw ban mask directly to the bot's ban list and sets it on the channel
ban <#chan> <nick> [o] Bans a user from the specified channel
tban <#chan> <nick> [o] Temporarily bans a user from the specified channel
kick <#chan> <nick> [o] Kicks a user from the specified channel
voice <#chan> <nick> [o] Gives voice to a user in the specified channel
devoice <#chan> <nick> [o] Removes voice from a user in the specified channel
unban <#chan> <mask> [o] Removes a ban mask from the specified channel
banlist <#chan> [o] Uploads and sends the ban list for the specified channel
autoadd <#chan> <on/off/status> [o] Manages automatic ban adding for the specified channel
addop <#chan> <nick> [n] Adds a user as op for the specified channel
delop <#chan> <nick> [n] Removes a user's op access for the specified channel
ops <#chan> [n] Lists all ops registered for the specified channel
opcmds <#chan> [o] Lists all available commands

Automatic Ban Tracking

When enabled, the bot automatically mirrors IRC bans (+b modes) into its internal ban list. This keeps the bot's ban list in sync with the channel's ban list regardless of who sets the bans.

  • Bans matching protectMasks are never added and will be immediately removed if set.
  • Bans matching any host belonging to a user with the m, n, or o flag are protected and will be immediately removed.
  • Extended bans (masks starting with ~) are tracked separately as EXTBAN entries and marked as sticky.
  • Auto-tracking is per-channel and is toggled with @autoadd on/off.
  • Op notices (NOTICE @#channel) are sent when bans are automatically added.
  • Every 5 minutes, the bot scans all channels for existing extended bans and adds any that are not yet in its internal list, also marking them as sticky.

Language Support

The script uses Tcl's msgcat package for internationalisation. Language files are stored in scripts/cmgmt_langs/ and named by locale (e.g. en.msg, pt.msg, it.msg).

To change the language, set the locale variable in the configuration section to the desired locale code.

Available Languages

Code Language
en English
pt Portuguese (European)
it Italian

To add a new language, copy en.msg, rename it to the desired locale code, and translate the strings. The %1$s positional placeholders must be kept in the same order as described in the comments above each entry. The is.enabled and is.disabled keys are used as the substituted value inside the autoadd.status message, so they should be translated as a single word or short phrase that fits naturally into that sentence.

Custom Upload Command

The upCommand variable accepts any command that reads from stdin and returns a URL. Some examples:

# x0.at (default)
variable upCommand "curl -s -F file=@- https://x0.at/"

# termbin.com
variable upCommand "nc termbin.com 9999"

# Your own pastebin
variable upCommand "curl -s -F file=@- https://your-pastebin.com/upload"

Notes

  • The bot will not ban, kick, or remove voice from users with the o flag or users matching protectMasks.
  • If someone tries to use a ban/kick command on the bot itself, the bot will kick them instead.
  • @addban expects a correctly formatted mask. No mask generation is done — what you type is what gets set.
  • @ban and @tban generate the ban mask automatically from the target's host, using the type set in banMask. If the host begins with uid or sid (common on InspIRCd-based networks), the mask is always set to *!*@host regardless of banMask.
  • The ban list upload requires an external command that reads from stdin. The default uses x0.at. This can be changed via the upCommand variable.
  • Extended bans are tracked but not managed by the bot's ban/unban commands — they are handled solely through IRC mode changes.


Channel Management - Versione Italiana

Uno script Eggdrop per la gestione dei canali IRC. Fornisce agli op i comandi per bannare, kickare, assegnare la voice e gestire la lista ban interna del bot, con supporto per il tracciamento automatico dei ban e per più lingue.


Requisiti

  • Eggdrop 1.8+
  • Tcl 8.5+
  • Pacchetto msgcat (incluso nella libreria standard di Tcl)

Installazione

  1. Copia cmgmt.tcl nella directory scripts/ di Eggdrop.
  2. Copia la directory cmgmt_langs/ nella directory scripts/ di Eggdrop.
  3. Aggiungi la seguente riga al file di configurazione di Eggdrop:
source scripts/cmgmt.tcl
  1. Esegui il rehash o riavvia il bot.

Configurazione

Tutta la configurazione si trova all'inizio di cmgmt.tcl.

Variabile Predefinito Descrizione
locale en Lingua da utilizzare. Deve corrispondere a un file in cmgmt_langs/ (es. en, pt, it)
trigger @ Prefisso per i comandi pubblici
tBanDuration 30 Durata dei ban temporanei, in minuti
upCommand curl -s -F file=@- https://x0.at/ Comando per caricare la lista ban. Deve leggere dallo stdin
banMask 2 Tipo di banmask utilizzata quando si banna un utente per nick (vedi i tipi di mask qui sotto)
addOpMask 1 Tipo di mask utilizzata quando si aggiunge un utente come op (vedi i tipi di mask qui sotto)
protectMasks *!*@services.ptirc.org Mask che non possono mai essere bannate o kickate
noAddNicks ChanServ NickServ ChanBot Nick da ignorare durante l'aggiunta automatica dei ban
noAddMasks *!*@services.ptirc.org Mask da ignorare durante l'aggiunta automatica dei ban

Tipi di Banmask

Valore Formato della mask
0 *!user@host
1 *!*user@host
2 *!*@host
3 *!*user@*.host
4 *!*@*.host
5 nick!user@host
6 nick!*user@host
7 nick!*@host
8 nick!*user@*.host
9 nick!*@*.host

Comandi

I comandi contrassegnati con [o] richiedono il flag o (op) sul canale. I comandi contrassegnati con [n] richiedono il flag n (owner) globale. I comandi sono disponibili sia pubblicamente nel canale (preceduti dal trigger) che privatamente tramite /msg al bot.

Comandi Pubblici (nel canale)

Comando Flag Descrizione
@addban <mask> [o] Aggiunge una banmask grezza direttamente alla lista ban del bot e la imposta sul canale. La mask deve essere correttamente formattata (es. *!*@host)
@ban <nick> [o] Banna un utente dal canale e aggiunge la mask alla lista ban del bot
@tban <nick> [o] Banna temporaneamente un utente per la durata impostata in tBanDuration
@kick <nick> [o] Kicka un utente dal canale
@voice <nick> [o] Assegna la voice (+v) a un utente
@devoice <nick> [o] Rimuove la voice (-v) a un utente
@unban <mask> [o] Rimuove una banmask dal canale e dalla lista ban del bot
@banlist [o] Carica la lista ban del canale e pubblica il link
@autoadd <on/off/status> [o] Abilita, disabilita o controlla lo stato dell'aggiunta automatica dei ban
@addop <nick> [n] Aggiunge un utente come op del canale nel database del bot
@delop <nick> [n] Rimuove i permessi di op di un utente per il canale dal database del bot
@ops [n] Elenca tutti gli op registrati per il canale nel database del bot
@opcmds [o] Elenca tutti i comandi disponibili

Comandi Privati (via /msg)

La sintassi è la stessa ma richiede il canale come primo argomento.

Comando Flag Descrizione
addban <#chan> <mask> [o] Aggiunge una banmask grezza direttamente alla lista ban del bot e la imposta sul canale
ban <#chan> <nick> [o] Banna un utente dal canale specificato
tban <#chan> <nick> [o] Banna temporaneamente un utente dal canale specificato
kick <#chan> <nick> [o] Kicka un utente dal canale specificato
voice <#chan> <nick> [o] Assegna la voice a un utente nel canale specificato
devoice <#chan> <nick> [o] Rimuove la voice a un utente nel canale specificato
unban <#chan> <mask> [o] Rimuove una banmask dal canale specificato
banlist <#chan> [o] Carica e invia la lista ban del canale specificato
autoadd <#chan> <on/off/status> [o] Gestisce l'aggiunta automatica dei ban per il canale specificato
addop <#chan> <nick> [n] Aggiunge un utente come op del canale specificato
delop <#chan> <nick> [n] Rimuove i permessi di op di un utente per il canale specificato
ops <#chan> [n] Elenca tutti gli op registrati per il canale specificato
opcmds <#chan> [o] Elenca tutti i comandi disponibili

Tracciamento Automatico dei Ban

Quando abilitato, il bot registra automaticamente i ban IRC (mode +b) nella sua lista ban interna, mantenendola sincronizzata con quella del canale indipendentemente da chi imposta i ban.

  • I ban che corrispondono a protectMasks non vengono mai aggiunti e vengono rimossi immediatamente se impostati.
  • I ban che corrispondono a un host di un utente con flag m, n o o sono protetti e vengono rimossi immediatamente.
  • I ban estesi (mask che iniziano con ~) vengono tracciati separatamente come voci EXTBAN e contrassegnati come sticky.
  • Il tracciamento automatico è per-canale e si attiva con @autoadd on/off.
  • Quando i ban vengono aggiunti automaticamente, viene inviata una notice agli op (NOTICE @#canale).
  • Ogni 5 minuti, il bot analizza tutti i canali alla ricerca di ban estesi esistenti e aggiunge quelli non ancora presenti nella sua lista interna, contrassegnandoli come sticky.

Supporto Multilingua

Lo script utilizza il pacchetto msgcat di Tcl per l'internazionalizzazione. I file di lingua si trovano in scripts/cmgmt_langs/ e sono nominati in base al codice locale (es. en.msg, pt.msg, it.msg).

Per cambiare lingua, imposta la variabile locale nella sezione di configurazione con il codice locale desiderato.

Lingue Disponibili

Codice Lingua
en Inglese
pt Portoghese (Europeo)
it Italiano

Per aggiungere una nuova lingua, copia en.msg, rinominalo con il codice locale desiderato e traduci le stringhe. I segnaposto posizionali %1$s devono essere mantenuti nell'ordine indicato nei commenti sopra ogni voce. Le chiavi is.enabled e is.disabled vengono usate come valore sostituito all'interno del messaggio autoadd.status, quindi devono essere tradotte come una parola o una breve espressione che si inserisca naturalmente in quella frase.

Comando di Upload Personalizzato

La variabile upCommand accetta qualsiasi comando che legga dallo stdin e restituisca un URL. Alcuni esempi:

# x0.at (predefinito)
variable upCommand "curl -s -F file=@- https://x0.at/"

# termbin.com
variable upCommand "nc termbin.com 9999"

# Il tuo pastebin
variable upCommand "curl -s -F file=@- https://tuo-pastebin.com/upload"

Note

  • Il bot non bannerà, kickerà o rimuoverà la voice agli utenti con flag o o che corrispondono a protectMasks.
  • Se qualcuno tenta di usare un comando ban/kick sul bot stesso, il bot kickerà lui al suo posto.
  • @addban si aspetta una mask correttamente formattata. Non viene effettuata alcuna generazione automatica della mask — quello che scrivi è quello che viene impostato.
  • @ban e @tban generano automaticamente la banmask dall'host del bersaglio, usando il tipo impostato in banMask. Se l'host inizia con uid o sid (comune sulle reti basate su InspIRCd), la mask viene sempre impostata come *!*@host indipendentemente da banMask.
  • Il caricamento della lista ban richiede un comando esterno che legga dallo stdin. Il predefinito utilizza x0.at. Può essere cambiato tramite la variabile upCommand.
  • I ban estesi vengono tracciati ma non gestiti dai comandi ban/unban del bot — vengono gestiti esclusivamente tramite i cambi di mode IRC.


Channel Management - Versão Portuguesa

Um script Eggdrop para gestão de canais IRC. Fornece aos ops comandos para banir, kickar, atribuir voice e gerir a lista de bans interna do bot, com suporte para rastreamento automático de bans e múltiplos idiomas.


Requisitos

  • Eggdrop 1.8+
  • Tcl 8.5+
  • Pacote msgcat (incluído na biblioteca padrão do Tcl)

Instalação

  1. Copia cmgmt.tcl para a directoria scripts/ do Eggdrop.
  2. Copia a directoria cmgmt_langs/ para a directoria scripts/ do Eggdrop.
  3. Adiciona a seguinte linha ao ficheiro de configuração do Eggdrop:
source scripts/cmgmt.tcl
  1. Faz rehash ou reinicia o bot.

Configuração

Toda a configuração é feita no início de cmgmt.tcl.

Variável Predefinição Descrição
locale en Idioma a utilizar. Tem de corresponder a um ficheiro em cmgmt_langs/ (ex. en, pt, it)
trigger @ Prefixo para os comandos públicos
tBanDuration 30 Duração dos bans temporários, em minutos
upCommand curl -s -F file=@- https://x0.at/ Comando para carregar a lista de bans. Tem de ler do stdin
banMask 2 Tipo de banmask utilizada ao banir um utilizador por nick (ver tipos de mask abaixo)
addOpMask 1 Tipo de mask utilizada ao adicionar um utilizador como op (ver tipos de mask abaixo)
protectMasks *!*@services.ptirc.org Masks que nunca podem ser banidas ou kickadas
noAddNicks ChanServ NickServ ChanBot Nicks a ignorar na adição automática de bans
noAddMasks *!*@services.ptirc.org Masks a ignorar na adição automática de bans

Tipos de Banmask

Valor Formato da mask
0 *!user@host
1 *!*user@host
2 *!*@host
3 *!*user@*.host
4 *!*@*.host
5 nick!user@host
6 nick!*user@host
7 nick!*@host
8 nick!*user@*.host
9 nick!*@*.host

Comandos

Os comandos marcados com [o] requerem o flag o (op) no canal. Os comandos marcados com [n] requerem o flag n (owner) globalmente. Os comandos estão disponíveis tanto publicamente no canal (prefixados com o trigger) como privadamente via /msg ao bot.

Comandos Públicos (no canal)

Comando Flag Descrição
@addban <mask> [o] Adiciona uma banmask directamente à lista de bans do bot e define-a no canal. A mask tem de estar correctamente formatada (ex. *!*@host)
@ban <nick> [o] Bane um utilizador do canal e adiciona a mask à lista de bans do bot
@tban <nick> [o] Bane temporariamente um utilizador pelo tempo definido em tBanDuration
@kick <nick> [o] Kicka um utilizador do canal
@voice <nick> [o] Atribui voice (+v) a um utilizador
@devoice <nick> [o] Remove a voice (-v) a um utilizador
@unban <mask> [o] Remove uma banmask do canal e da lista de bans do bot
@banlist [o] Carrega a lista de bans do canal e publica o link
@autoadd <on/off/status> [o] Activa, desactiva ou verifica o estado da adição automática de bans
@addop <nick> [n] Adiciona um utilizador como op do canal na base de dados do bot
@delop <nick> [n] Remove o acesso de op de um utilizador para o canal da base de dados do bot
@ops [n] Lista todos os ops registados para o canal na base de dados do bot
@opcmds [o] Lista todos os comandos disponíveis

Comandos Privados (via /msg)

A sintaxe é a mesma mas requer o canal como primeiro argumento.

Comando Flag Descrição
addban <#chan> <mask> [o] Adiciona uma banmask directamente à lista de bans do bot e define-a no canal
ban <#chan> <nick> [o] Bane um utilizador do canal especificado
tban <#chan> <nick> [o] Bane temporariamente um utilizador do canal especificado
kick <#chan> <nick> [o] Kicka um utilizador do canal especificado
voice <#chan> <nick> [o] Atribui voice a um utilizador no canal especificado
devoice <#chan> <nick> [o] Remove a voice a um utilizador no canal especificado
unban <#chan> <mask> [o] Remove uma banmask do canal especificado
banlist <#chan> [o] Carrega e envia a lista de bans do canal especificado
autoadd <#chan> <on/off/status> [o] Gere a adição automática de bans para o canal especificado
addop <#chan> <nick> [n] Adiciona um utilizador como op do canal especificado
delop <#chan> <nick> [n] Remove o acesso de op de um utilizador para o canal especificado
ops <#chan> [n] Lista todos os ops registados para o canal especificado
opcmds <#chan> [o] Lista todos os comandos disponíveis

Rastreamento Automático de Bans

Quando activado, o bot regista automaticamente os bans IRC (mode +b) na sua lista de bans interna, mantendo-a sincronizada com a do canal independentemente de quem define os bans.

  • Bans que correspondam a protectMasks nunca são adicionados e são removidos imediatamente se definidos.
  • Bans que correspondam ao host de um utilizador com flag m, n ou o são protegidos e removidos imediatamente.
  • Bans estendidos (masks que começam com ~) são rastreados separadamente como entradas EXTBAN e marcados como sticky.
  • O rastreamento automático é por canal e é activado com @autoadd on/off.
  • Quando bans são adicionados automaticamente, é enviada uma notice aos ops (NOTICE @#canal).
  • A cada 5 minutos, o bot analisa todos os canais à procura de bans estendidos existentes e adiciona os que ainda não estão na sua lista interna, marcando-os como sticky.

Suporte a Idiomas

O script utiliza o pacote msgcat do Tcl para internacionalização. Os ficheiros de idioma estão em scripts/cmgmt_langs/ e são nomeados pelo código de locale (ex. en.msg, pt.msg, it.msg).

Para alterar o idioma, define a variável locale na secção de configuração com o código de locale pretendido.

Idiomas Disponíveis

Código Idioma
en Inglês
pt Português (Europeu)
it Italiano

Para adicionar um novo idioma, copia en.msg, renomeia-o com o código de locale pretendido e traduz as strings. Os marcadores posicionais %1$s têm de ser mantidos na ordem indicada nos comentários acima de cada entrada. As chaves is.enabled e is.disabled são usadas como valor substituído dentro da mensagem autoadd.status, por isso devem ser traduzidas como uma palavra ou expressão curta que se encaixe naturalmente nessa frase.

Comando de Upload Personalizado

A variável upCommand aceita qualquer comando que leia do stdin e devolva um URL. Alguns exemplos:

# x0.at (predefinição)
variable upCommand "curl -s -F file=@- https://x0.at/"

# termbin.com
variable upCommand "nc termbin.com 9999"

# O teu próprio pastebin
variable upCommand "curl -s -F file=@- https://teu-pastebin.com/upload"

Notas

  • O bot não vai banir, kickar ou remover a voice a utilizadores com flag o ou que correspondam a protectMasks.
  • Se alguém tentar usar um comando ban/kick no próprio bot, o bot kicka essa pessoa em vez disso.
  • @addban espera uma mask correctamente formatada. Não é feita nenhuma geração automática de mask — o que escreveres é o que fica definido.
  • @ban e @tban geram automaticamente a banmask a partir do host do alvo, usando o tipo definido em banMask. Se o host começar com uid ou sid (comum em redes baseadas em InspIRCd), a mask é sempre definida como *!*@host independentemente de banMask.
  • O carregamento da lista de bans requer um comando externo que leia do stdin. A predefinição utiliza x0.at. Pode ser alterado através da variável upCommand.
  • Os bans estendidos são rastreados mas não geridos pelos comandos ban/unban do bot — são tratados exclusivamente através de mudanças de mode IRC.