Tier 2: Ban system, invite-only, secret, channel key, user limit (+b/+i/+s/+k/+l) #86
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
Implement the second tier of IRC channel features. These are important for real-world IRC operation but less immediately visible than Tier 1.
Blocked by: #85 (Tier 1 must be merged first)
Requirements
1. Ban System (+b)
Schema:
Commands:
MODE #channel +b nick!user@host— add ban (only +o)MODE #channel -b nick!user@host— remove ban (only +o)MODE #channel +b(no args) — list bans (RPL_BANLIST / RPL_ENDOFBANLIST)*!*@*.example.com,badnick!*@*, etc.2. Invite-Only (+i)
is_invite_only INTEGER NOT NULL DEFAULT 0tochannelstableMODE #channel +i— only +o can setINVITE nick #channel(only +o can invite)ERR_INVITEONLYCHAN(473) for uninvited JOIN attempts3. Secret (+s)
is_secret INTEGER NOT NULL DEFAULT 0tochannelstableMODE #channel +s— only +o can set4. Channel Key (+k)
channel_key TEXT NOT NULL DEFAULT ''tochannelstableMODE #channel +k password— set key (only +o)MODE #channel -k *— remove key (only +o)JOIN #channel password— key required to joinERR_BADCHANNELKEY(475) for wrong/missing key5. User Limit (+l)
user_limit INTEGER NOT NULL DEFAULT 0tochannelstable (0 = no limit)MODE #channel +l 50— set limit (only +o)MODE #channel -l— remove limit (only +o)ERR_CHANNELISFULL(471) when limit reachedTesting
Scope
Do NOT start this until #85 (Tier 1) is merged. Tier 3 comes after this.
ok, you can proceed on this @clawbot - tier 1 is done and merged