# vim: filetype=perl # https://libera.chat/guides/certfp # https://www.oftc.net/NickServ/CertFP/ servers = ( { address = "irc.gitter.im"; chatnet = "gitter"; port = "6697"; password = ""; use_tls = "yes"; tls_verify = "yes"; autoconnect = "yes"; }, { address = "192.99.102.52"; chatnet = "FRRouting.slack.com"; port = "6667"; password = ""; use_tls = "yes"; tls_verify = "no"; autoconnect = "yes"; }, # { # address = "irc.oftc.net"; # chatnet = "OFTC"; # port = "6697"; # use_tls = "yes"; # tls_cert = "~/.irssi/certs/nick.pem"; # tls_verify = "yes"; # autoconnect = "no"; # }, { address = "192.168.1.109"; port = "6667"; chatnet = "bitlbee"; autoconnect = "yes"; }, { address = "192.168.1.214"; port = "8667"; chatnet = "bitlbee_r"; autoconnect = "no"; use_tls = "no"; }, # { # address = "irc.libera.chat"; # chatnet = "LiberaChat"; # port = "6697"; # use_tls = "yes"; # tls_cert = "~/.irssi/certs/nick.pem"; # tls_verify = "yes"; # autoconnect = "no"; # }, # { # address = "irc.rizon.net"; # chatnet = "Rizon"; # port = "6697"; # use_tls = "yes"; # tls_cert = "~/.irssi/certs/nick.pem"; # tls_verify = "yes"; # autoconnect = "no"; # }, { address = "ssl.ircnet.io"; chatnet = "IRCNet"; port = "6697"; use_tls = "yes"; tls_cert = "~/.irssi/certs/nick.pem"; tls_verify = "yes"; autoconnect = "yes"; }, { address = "185.130.45.46"; chatnet = "Libera-ZNC"; port = "1025"; password = "terminaldweller/Liberachat:"; # pragma: allowlist secret use_tls = "yes"; tls_cert = "~/.irssi/certs/nick.pem"; tls_verify = "no"; autoconnect = "yes"; }, { address = "185.130.45.46"; chatnet = "OFTC-ZNC"; port = "1025"; password = "terminaldweller/OFTC:network"; # pragma: allowlist secret use_tls = "yes"; tls_cert = "~/.irssi/certs/nick.pem"; tls_verify = "no"; autoconnect = "yes"; }, { address = "185.130.45.46"; chatnet = "Rizon-ZNC"; port = "1025"; password = "terminaldweller/Rizon:network"; # pragma: allowlist secret use_tls = "yes"; tls_cert = "~/.irssi/certs/nick.pem"; tls_verify = "no"; autoconnect = "yes"; }, { address = "185.130.45.46"; chatnet = "Undernet-ZNC"; port = "1025"; password = "terminaldweller/undernet:network"; # pragma: allowlist secret use_tls = "yes"; tls_cert = "~/.irssi/certs/nick.pem"; tls_verify = "no"; autoconnect = "yes"; }, { address = "efnet.port80.se"; chatnet = "EFnet"; port = "6697"; use_tls = "yes"; tls_verify = "no"; autoconnect = "yes"; }, { address = "irc.dal.net"; chatnet = "DALnet"; port = "6697"; use_tls = "yes"; tls_verify = "yes"; autoconnect = "yes"; }, { address = "185.130.45.46"; chatnet = "TildeChat_ZNC"; port = "1025"; password = "terminaldweller/Tilde_Chat:network"; # pragma: allowlist secret tls_cert = "~/.irssi/certs/nick.pem"; use_tls = "yes"; tls_verify = "no"; autoconnect = "yes"; } ); chatnets = { OFTC = { type = "IRC"; nick = "terminaldweller"; autosendcmd = "/^msg nickserv set cloak on;wait 3000"; max_kicks = "1"; max_msgs = "1"; max_whois = "1"; }; "OFTC-ZNC" = { type = "IRC"; nick = "terminaldweller"; autosendcmd = "/^msg nickserv set cloak on;mode terminaldweller j;wait 3000"; max_kicks = "1"; max_msgs = "1"; max_whois = "1"; }; gitter = { type = "IRC"; nick = "terminaldweller"; }; "app.slack.com" = { type = "IRC"; nick = "terminaldweller"; }; "FRRouting.slack.com" = { type = "IRC"; }; bitlbee = { autosendcmd = "/^msg &bitlbee identify gorgoroth;wait 3000"; type = "IRC"; }; LiberaChat = { type = "IRC"; sasl_mechanism = "EXTERNAL"; }; "Libera-ZNC" = { type = "IRC"; autosendcmd = "/^mode terminaldweller +g;wait 3000"; }; # Rizon = { # type = "IRC"; # autosendcmd = "/^mode terminaldweller +px;wait 3000"; # }; "Rizon-ZNC" = { type = "IRC"; autosendcmd = "/^mode terminaldweller +RCGpx;wait 3000"; }; IRCNet = { type = "IRC"; }; "Undernet-ZNC" = { type = "IRC"; nick = "terminaldwel"; autosendcmd = "/^mode termi +ix;msg *status traffic;wait 3000"; }; EFnet = { type = "IRC"; }; DALnet = { type = "IRC"; nick = "terminaldweller"; autosendcmd = "/^msg nickserv@services.dal.net identify identify;mode terminaldweller HCi;wait 3000"; }; bitlbee_r = { type = "IRC"; }; }; channels = ( # { name = "#dpdk"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#fdio-vpp"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#openssl"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#netbsd"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#netplan"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#ubuntu"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#qemu"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, { name = "#debian"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, # { name = "#virt"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, { name = "#openwrt"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, { name = "#selfhosting"; chatnet = "TildeChat_ZNC"; autojoin = "yes"; }, { name = "#tor"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, { name = "#llvm"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, { name = "##terminaldweller"; chatnet = "OFTC-ZNC"; autojoin = "yes"; }, # { name = "#openssh"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#gdb"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#openbsd"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#lobsters"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#gnupg"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#znc"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#go-nuts"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#opennic"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "##terminaldweller"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#voidlinux"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#CataclysmDDA"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#security"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#docker"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#crypto"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#tmux"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#vim"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#git"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#neomutt"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#busybox"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, # { name = "#shadow"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#freebsd"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#linux"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#irssi"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#bookz"; chatnet = "Undernet-ZNC"; autojoin = "yes"; }, { name = "#postgresql"; chatnet = "Libera-ZNC"; autojoin = "yes"; }, { name = "#news"; chatnet = "Rizon-ZNC"; autojoin = "yes"; }, { name = "##terminaldweller"; chatnet = "Rizon-ZNC"; autojoin = "yes"; }, { name = "#irc"; chatnet = "IRCNet"; autojoin = "yes"; }, { name = "#supersonic"; chatnet = "DALNet"; autojoin = "yes"; }, # { name = "#kvm"; chatnet = "Libera-ZNC"; autojoin = "yes"; } ); aliases = { ATAG = "WINDOW SERVER"; ADDALLCHANS = "SCRIPT EXEC foreach my \\$channel (Irssi::channels()) { Irssi::command(\"CHANNEL ADD -auto \\$channel->{name} \\$channel->{server}->{tag} \\$channel->{key}\")\\;}"; B = "BAN"; BACK = "AWAY"; BANS = "BAN"; BYE = "QUIT"; C = "CLEAR"; CALC = "EXEC - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi"; CHAT = "DCC CHAT"; DATE = "TIME"; DEHIGHLIGHT = "DEHILIGHT"; DESCRIBE = "ACTION"; DHL = "DEHILIGHT"; EXEMPTLIST = "MODE $C +e"; EXIT = "QUIT"; GOTO = "SCROLLBACK GOTO"; HIGHLIGHT = "HILIGHT"; HL = "HILIGHT"; HOST = "USERHOST"; INVITELIST = "MODE $C +I"; J = "JOIN"; K = "KICK"; KB = "KICKBAN"; KN = "KNOCKOUT"; LAST = "LASTLOG"; LEAVE = "PART"; M = "MSG"; MUB = "UNBAN *"; N = "NAMES"; NMSG = "^MSG"; P = "PART"; Q = "QUERY"; RESET = "SET -default"; RUN = "SCRIPT LOAD"; SAY = "MSG *"; SB = "SCROLLBACK"; SBAR = "STATUSBAR"; SIGNOFF = "QUIT"; SV = "MSG * Irssi $J ($V) - http://www.irssi.org"; T = "TOPIC"; UB = "UNBAN"; UMODE = "MODE $N"; UNSET = "SET -clear"; W = "WHO"; WC = "WINDOW CLOSE"; WG = "WINDOW GOTO"; WJOIN = "JOIN -window"; WI = "WHOIS"; WII = "WHOIS $0 $0"; WL = "WINDOW LIST"; WN = "WINDOW NEW HIDDEN"; WQUERY = "QUERY -window"; WW = "WHOWAS"; }; statusbar = { # formats: # when using {templates}, the template is shown only if it's argument isn't # empty unless no argument is given. for example {sb} is printed always, # but {sb $T} is printed only if $T isn't empty. items = { # start/end text in statusbars barstart = "{sbstart}"; barend = "{sbend}"; topicbarstart = "{topicsbstart}"; topicbarend = "{topicsbend}"; # treated "normally", you could change the time/user name to whatever time = "{sb $Z}"; user = "%9%z005fff{sb {sbnickmode $[-2]cumode}%k$N %Zeeeeee {sbumode %k$usermode} %Z005fff%0%z005f00{sbaway $A}}%N"; # treated specially .. window is printed with non-empty windows, # window_empty is printed with empty windows window = " %Z00af00{sb $tag/{channel $itemname} %C {sbmode $M}} %C%n "; window_empty = "{sb {sbservertag $tag}}"; prompt = "please%z005f87{%k%z005f87%9$c $*%w%k$R%w%k$S%w%k$N%w%k$T %N%Z005f87}%n"; prompt_empty = "you%z005f87%k%z005f87%9$c $*%w%k$R%w%k$S%w%k$N%w%k$T %N%Z005f87%n"; topic = "%Z005f00%k%z005f00%N%Z005f00%N %Z5f5faf%9 $topic%N"; topic_empty = " Irssi v$J - http://www.irssi.org"; # all of these treated specially, they're only displayed when needed # Powerline lag = "{sb %0%Zff8700%zff8700%k ⌚ $0 %Zff8700%0%N}"; act = "{sb %Zeeeeee%0%n%z005fff %F$0%F %N}"; more = "%c%0%n%6 more ⬇ %c%0%N"; # vim_mode vim_mode_1 = "%z005f5f%Zffffff%z005f5f%k%9 $vim_cmd_mode%N"; vim_windows_1 = "%Z005f5f%0%z005f5f%k%9 $vim_wins%z005f5f"; itime = "%Z005f00%k%z005f00%9 $0 %z005f00"; }; # there's two type of statusbars. root statusbars are either at the top # of the screen or at the bottom of the screen. window statusbars are at # the top/bottom of each split window in screen. default = { # the "default statusbar" to be displayed at the bottom of the window. # contains all the normal items. window = { disabled = "no"; # window, root type = "window"; # top, bottom placement = "bottom"; # number position = "1"; # active, inactive, always visible = "active"; # list of items in statusbar in the display order items = { barstart = { priority = "100"; }; user = { }; window = { }; window_empty = { }; lag = { priority = "-1"; }; more = { priority = "-1"; alignment = "right"; }; otr = { priority = "100"; alignment = "right"; }; usercount = { }; inputlength = { alignment = "right"; }; rotator = { alignment = "right"; }; vim_windows_1 = { alignment = "right"; }; vim_mode_1 = { priority = "100"; alignment = "right"; }; barend = { priority = "100"; alignment = "right"; }; }; }; # statusbar to use in inactive split windows window_inact = { type = "window"; placement = "bottom"; position = "1"; visible = "inactive"; items = { barstart = { priority = "100"; }; window = { }; window_empty = { }; more = { priority = "-1"; alignment = "right"; }; barend = { priority = "100"; alignment = "right"; }; }; }; # we treat input line as yet another statusbar :) It's possible to # add other items before or after the input line item. # topicbar topic = { type = "root"; placement = "top"; position = "1"; visible = "always"; items = { topicbarstart = { priority = "100"; }; topicbarend = { priority = "100"; alignment = "right"; }; topic = { }; topicempty = { }; }; }; sb_timezones = { items = { barstart = { }; timezones = { }; itime = { priority = "1"; alignment = "right"; }; barend = { alignment = "right"; }; }; }; dccstat = { items = { dccstat = { }; }; }; prompt = { items = { uberprompt = { priority = "-1"; }; input = { priority = "10"; }; }; position = "100"; }; awl_0 = { items = { barstart = { priority = "100"; }; awl_0 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; awl_1 = { items = { barstart = { priority = "100"; }; awl_1 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; awl_2 = { items = { barstart = { priority = "100"; }; awl_2 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; awl_3 = { items = { barstart = { priority = "100"; }; awl_3 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; awl_4 = { items = { barstart = { priority = "100"; }; awl_4 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; }; }; settings = { misc = { split_line_end = "↪"; } core = { real_name = "john doe"; user_name = "devi"; nick = "terminaldweller"; use_proxy = "no"; proxy_address = "127.0.0.1"; proxy_port = "9050"; proxy_string = "CONNECT %s:%d HTTP/1.0\012\012"; proxy_string_after = "conn %s %d"; proxy_password = ""; }; "fe-common/core" = { theme = "solarized-powerline"; hilight_color = "%Zd75f5f"; emphasis_italics = "yes"; emphasis_multiword = "yes"; emphasis_replace = "no"; show_names_on_join = "no"; }; "fe-text" = { actlist_sort = "refnum"; }; "perl/core/scripts" = { # adv_windowlist.pl awl_block = "-20"; awl_sbar_maxlength = "off"; awl_hide_empty = "yes"; awl_mouse = "no"; awl_viewer = "no"; awl_maxlines = "0"; #fancy_abbrev = "head"; # trackbar.pl trackbar_style = "%B"; title_screen_window = "yes"; awl_shared_sbar = "OFF"; # usercount.pl usercount_show_halfops = "ON"; usercount_show_ircops = "ON"; usercount_show_zero = "ON"; # timezones timezones_divider = " %Zeeeeee%Z008080 "; timezones = "GMT:GMT EST:EST CET:CET Tehran:Asia/Tehran Tokyo:Asia/Tokyo Montreal:America/Montreal Pacific:America/Los_Angeles Paris:Europe/Paris"; # hilite_url url_color = "32"; hilite_url = "32"; # rotator rotator_chars = "%Z005f5f%z005f5f%k..%N %Z005f5f%z005f5f%koo%N %Z005f5f%z005f5f%k00%N %Z005f5f%z005f5f%kOO%N %Z005f5f%z005f5f%k00%N %Z005f5f%z005f5f%koo%N"; rotator_speed = "1000"; rotator_bounce = "yes"; rotator_seperator = " "; # dccstats dccstat_hide_sbar_when_inactive = "no"; dccstat_cycle_through_transfers = "yes"; # uberprmpt uberprompt_format = "%k%z005f87%9$c $*%w%k$R%w%k$S%w%k$N%w%k$T %N%Z005f87%Z005f5f$uber"; uberprompt_format_empty = "%k%z005f87%9$c $*%w%k$R%w%k$S%w%k$N%w%k$T %N%Z005f87%Z005f5f$uber"; # irssi_logger il_dbname = "irc"; il_dbuser = "postgres"; il_dbpass = "devi"; # nm2 neat_shrink = "yes"; neat_staircase_shrink = "yes"; neat_custom_modes = "no"; neat_dynamic = "yes"; # vim_mode start_cmd = "yes"; vim_mode_start_cmd = "yes"; vim_mode_max_undo_lines = "100"; # inputlength inputlength_width = "0"; inputlength_padding_char = "%Z005f00  "; # bitlbee_typing_notice bitlbee_send_typing = "0"; bitlbee_typing_allwin = "1"; }; "irc/dcc" = { dcc_download_path = "~/.irssi/downloads/"; dcc_send_replace_space_with_underscore = "yes"; dcc_timeout = "10min"; dcc_upload_path = "~/.irssi/uploads/"; dcc_autorename = "yes"; }; }; keyboard = ( { key = "meta-[M"; id = "command"; data = "mouse_xterm"; }, { key = "meta-p"; id = "change_window"; data = "20"; }, { key = "meta-a"; id = "change_window"; data = "21"; }, { key = "meta-s"; id = "change_window"; data = "22"; }, { key = "meta-d"; id = "change_window"; data = "23"; }, { key = "meta-f"; id = "change_window"; data = "24"; }, { key = "meta-g"; id = "change_window"; data = "25"; }, { key = "meta-h"; id = "change_window"; data = "26"; }, { key = "meta-j"; id = "change_window"; data = "27"; }, { key = "meta-k"; id = "change_window"; data = "28"; }, { key = "meta-l"; id = "change_window"; data = "29"; }, { key = "meta-;"; id = "change_window"; data = "30"; }, { key = "meta-z"; id = "change_window"; data = "31"; }, { key = "meta-x"; id = "change_window"; data = "32"; }, { key = "meta-c"; id = "change_window"; data = "33"; }, { key = "meta-v"; id = "change_window"; data = "34"; }, { key = "meta-b"; id = "change_window"; data = "35"; }, { key = "meta-n"; id = "change_window"; data = "36"; }, { key = "meta-m"; id = "change_window"; data = "37"; }, { key = "meta-,"; id = "change_window"; data = "38"; }, { key = "meta-."; id = "change_window"; data = "39"; }, { key = "meta-/"; id = "change_window"; data = "40"; } { key = "meta-meta2-1"; id = "change_window"; data = "41"; } ); ignores = ( { level = "JOINS PARTS QUITS NICKS"; channels = ( "#docker" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#voidlinux" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#node.js" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#ansible" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#dpdk" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#fdio-vpp" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#alacritty" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#go-nuts" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#neomutt" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#kvm" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#znc" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#netbsd" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#ubuntu" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#netplan" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#vagrant" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#openssl" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#crypto" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#tmux" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#vim" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#virt" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#debian" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#openbsd" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#freebsd" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#git" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#voidlinux" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#openwrt" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#debian-next" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#openssh" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#irssi" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#gdb" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#qemu" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#linux" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#shadow" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#tor" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#CataclysmDDA" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#security" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#busybox" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#bookz" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#qubes" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#gnupg" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#supersonic" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#news" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#mednafen" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#forgefed" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#lobsters" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#s6" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#postgresql" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#meta" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#gemini" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#llvm" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#opennic" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#selfhosting" ); }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#irc" ); }, { level = "CTCPS"; }, { level = "JOINS PARTS QUITS NICKS"; channels = ( "#zsh" ); } ); Mogs = { }; logs = { };