#Canada
Channel bot

OhCanada

OhCanada is the bot that sits in #Canada. It hands out voice, keeps the topic, fetches an op when you need one, and answers questions about who is who. You talk to it by typing a command starting with ! in the channel.

The short version: type !help to see what it can do, !ops if you need a human, and /msg OhCanada register if you plan to stick around. Everything it says back comes to you as a private notice — the channel never fills up with bot output.

Talking to it

Two ways, and they do the same thing:

<you> !verify -OhCanada- you — Level: Voice (+v) — registered as you -OhCanada- Hosts: *!*@you.users.undernet.org

Commands you aren't allowed to use simply don't answer. That is not a bug — the bot stays quiet rather than announcing to the room that somebody tried something.

OhCanada never sends colour codes. Everything it says is plain text, so it reads the same whether your client is light, dark, ancient or in a terminal.

Registering yourself

You don't need an account to chat. You need one if you want the bot to remember you — to keep your voice, to let the ops give you access, and to use commands like !ops and !info.

Hide your host first. OhCanada recognises you by your hostname. If you register while showing your ISP host, you lose access the day your IP changes — and the next person who gets that IP inherits it. Auth with X and set +x first, and the bot stores youraccount.users.undernet.org instead: a host only your X account can ever wear.
  1. Get an X account if you don't have one, at cservice.undernet.org ↗, then log in:
    /msg x@channels.undernet.org login <account> <password>
  2. Hide your host: /mode YourNick +x — check it worked with /whois YourNick.
  3. Ask to register: /msg OhCanada register. The bot shows you exactly what it would store and sends back a short code.
  4. Type the code back: /msg OhCanada verify <code>. It re-checks everything and saves. The code is good for five minutes.

Registering gets you a record, nothing more — no special powers. Voice, mod and op are handed out by the channel staff on top of it.

Voice — why you have a +, and why it went away

#Canada gives voice to people who talk. It is automatic:

It isn't a punishment and it isn't personal — it just keeps the voice list honest about who is actually in the room. If you are registered with voice access of your own (+v) or you are channel staff, the bot leaves your voice alone entirely.

Commands

Anyone can use these

CommandWhat it does
!helpLists what there is. !help ban explains one command with an example
!showcommandsEvery command name in one list
!verify [nick]Somebody's level, flags and registered hosts. On its own, yours
!versionWhich version of the script is running
/msg OhCanada registerStart registering — see registering

Once you're registered

CommandWhat it does
!ops <reason>Quietly calls the ops — see getting an op
!whois <nick>Somebody's access level and flags
!info <text>Set a one-line note about yourself. !info none clears it
!botThe command character and where to get help

Getting an op when you need one

Trouble in the channel — someone flooding, someone abusive, a bot spamming links — is what !ops is for:

<you> !ops someone is flooding the channel

That fires a message into the ops' own channel with your nick, where you are, and what you said. Nothing is announced in #Canada, so you're not picking a fight in public by asking.

Use it when you actually need a human. Ops can see it being used for nothing.

Who is who

Everyone with access sits on exactly one rung. !verify and !whois will tell you which.

LevelWhat it means
VoiceKeeps voice permanently. Never devoiced for going quiet
ModCan kick, ban and unban, and hand out voice — but is not opped in the channel
OpEverything a mod can do, plus channel +o and the topic
MasterRuns the bot's user list, the modules and the channel settings
OwnerEverything, including restarting the bot

Levels are a position, not a pile of permissions: moving somebody up or down replaces what they had rather than adding to it. Nobody can promote somebody to their own level or above, and nobody can change their own access.

Why did I lose my op?

If you hold op and go idle for a few hours, OhCanada takes it back and says so in the channel. Ask an op and you'll get it again — there is nothing to appeal.

It exists because an op list full of people who left three days ago protects nobody. #Canada is registered with X, so the channel's real op list lives there; OhCanada is only responsible for the day-to-day.

A few names are never touched by it: the service bots X and W, the channel's masters and owner, and the handful of people who run the place. If you see somebody keeping op through a quiet afternoon, that's why.

Losing voice works the same way and for the same reason — see voice.

For channel staff

If you hold mod, op or master, these are yours. Everything answers by private notice, and every one of them is written to the ops channel — including the attempts that get refused.

Mod

CommandWhat it does
!kick <nick> [reason]Kick
!ban <nick> [reason]Kick and ban on *!*@host
!unban <mask> · !bansLift a ban, or list them
!invite <nick>Invite somebody in
!voice · !devoiceGive or take voice
!addvoice · !delvoiceGrant or remove the Voice level
!accessWho has access here

Op

CommandWhat it does
!op · !deopGive or take op. Service bots and channel staff are refused
!topic <text>Set the topic and remember it
!topicsyncPut the remembered topic back
!addmod · !delmodGrant or remove the Mod level
!delaccess <nick>Remove whatever level somebody holds

Master

CommandWhat it does
!addop · !delopGrant or remove the Op level
!adduser · !deluserAdd or remove a record by hand
!mode <modes>Set channel modes
!blacklist · !whitelistPermanent bans, and lifting them
!idledeop <#chan> <hours>How long an op may idle before losing it
!module · !enable · !disableTurn features on and off for this channel
!chanlog [#chan|on|off]Where this channel's audit trail goes
!say · !actMake the bot speak in the channel
Adding someone is one step. !addvoice, !addmod and !addop work on a plain nick: if the bot has no record for that person it creates one from the host they're wearing right now. Nobody has to log in first, and there is no !adduser to do beforehand. They do have to be in the channel at the time — and if they haven't hidden their host, the bot will say so, because the access will only last as long as their IP does.

Owner commands (!join, !part, !rehash, !restart, !addmaster and the rest) are documented in full with the script — see below.

Running this bot yourself

OhCanada is an eggdrop ↗ running lmao.tcl, written for this channel and free for anyone to use under the GPLv3. Drop it in your scripts directory, add one line to eggdrop.conf, and .rehash:

cd ~/eggdrop/scripts
wget https://raw.githubusercontent.com/DooubleTap/lmao.tcl/master/lmao.tcl

# in eggdrop.conf
source scripts/lmao.tcl

Configuration, the module system, the access-flag internals, the channel-log format and the full changelog live with the source: github.com/DooubleTap/lmao.tcl ↗. This website is there too: github.com/DooubleTap/undernet-canada ↗.