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:
- In the channel — type
!helpwhere everyone can see it. The answer still comes back privately, only to you. - In private —
/msg OhCanada help. Commands that act on a channel want the channel named first:/msg OhCanada op #Canada.
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.
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.
+x first,
and the bot stores youraccount.users.undernet.org instead: a host only your X account
can ever wear.- 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> - Hide your host:
/mode YourNick +x— check it worked with/whois YourNick. - Ask to register:
/msg OhCanada register. The bot shows you exactly what it would store and sends back a short code. - 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:
- Say something, and OhCanada voices you.
- Go quiet for about three hours, and it quietly takes the voice back.
- Say something again, and you get it straight back.
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
| Command | What it does |
|---|---|
!help | Lists what there is. !help ban explains one command with an example |
!showcommands | Every command name in one list |
!verify [nick] | Somebody's level, flags and registered hosts. On its own, yours |
!version | Which version of the script is running |
/msg OhCanada register | Start registering — see registering |
Once you're registered
| Command | What 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 |
!bot | The 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:
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.
| Level | What it means |
|---|---|
| Voice | Keeps voice permanently. Never devoiced for going quiet |
| Mod | Can kick, ban and unban, and hand out voice — but is not opped in the channel |
| Op | Everything a mod can do, plus channel +o and the topic |
| Master | Runs the bot's user list, the modules and the channel settings |
| Owner | Everything, 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.
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
| Command | What it does |
|---|---|
!kick <nick> [reason] | Kick |
!ban <nick> [reason] | Kick and ban on *!*@host |
!unban <mask> · !bans | Lift a ban, or list them |
!invite <nick> | Invite somebody in |
!voice · !devoice | Give or take voice |
!addvoice · !delvoice | Grant or remove the Voice level |
!access | Who has access here |
Op
| Command | What it does |
|---|---|
!op · !deop | Give or take op. Service bots and channel staff are refused |
!topic <text> | Set the topic and remember it |
!topicsync | Put the remembered topic back |
!addmod · !delmod | Grant or remove the Mod level |
!delaccess <nick> | Remove whatever level somebody holds |
Master
| Command | What it does |
|---|---|
!addop · !delop | Grant or remove the Op level |
!adduser · !deluser | Add or remove a record by hand |
!mode <modes> | Set channel modes |
!blacklist · !whitelist | Permanent bans, and lifting them |
!idledeop <#chan> <hours> | How long an op may idle before losing it |
!module · !enable · !disable | Turn features on and off for this channel |
!chanlog [#chan|on|off] | Where this channel's audit trail goes |
!say · !act | Make the bot speak in the channel |
!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 ↗.