separate owners and admins in config fix incomplete docstring in watcher.pytags/v0.1
| @@ -22,5 +22,6 @@ CHANS = ["##earwigbot", "##earwig", "#wikipedia-en-afc"] | |||||
| AFC_CHANS = ["#wikipedia-en-afc"] # report recent AFC changes | AFC_CHANS = ["#wikipedia-en-afc"] # report recent AFC changes | ||||
| BOT_CHANS = ["##earwigbot", "#wikipedia-en-afc"] # report edits containing "!earwigbot" | BOT_CHANS = ["##earwigbot", "#wikipedia-en-afc"] # report edits containing "!earwigbot" | ||||
| # hardcoded hostnames of users who can use !restart and !git | |||||
| ADMINS = ["wikipedia/The-Earwig"] | |||||
| # hardcoded hostnames of users with certain permissions | |||||
| OWNERS = ["wikipedia/The-Earwig"] # can use owner-only commands (!restart and !git) | |||||
| ADMINS = ["wikipedia/The-Earwig", "wikipedia/LeonardBloom"] # can use high-risk commands, e.g. !op | |||||
| @@ -0,0 +1,24 @@ | |||||
| # -*- coding: utf-8 -*- | |||||
| """Voice/devoice/op/deop users in the channel.""" | |||||
| from config.irc_config import * | |||||
| connection, data = None, None | |||||
| def call(c, d): | |||||
| global connection, data | |||||
| connection, data = c, d | |||||
| if data.host not in ADMINS: | |||||
| connection.reply(data.chan, data.nick, "you must be a bot admin to use this command.") | |||||
| return | |||||
| if not data.args: # if it is just !op/!devoice/whatever without arguments, assume they want to do this to themselves | |||||
| target = data.nick | |||||
| else: | |||||
| target = data.args[0] | |||||
| action = data.command[1:] # strip ! at the beginning of the command | |||||
| connection.say("ChanServ", "%s %s %s" % (action, data.chan, target)) | |||||
| @@ -11,8 +11,8 @@ def call(c, d): | |||||
| global connection, data | global connection, data | ||||
| connection, data = c, d | connection, data = c, d | ||||
| if data.host not in ADMINS: | |||||
| connection.reply(data.chan, data.nick, "you must be a bot admin to use this command.") | |||||
| if data.host not in OWNERS: | |||||
| connection.reply(data.chan, data.nick, "you must be a bot owner to use this command.") | |||||
| return | return | ||||
| if not data.args: | if not data.args: | ||||
| @@ -52,8 +52,8 @@ def main(connection): | |||||
| triggers.check(connection, data, "msg") # check for general messages | triggers.check(connection, data, "msg") # check for general messages | ||||
| if data.msg.startswith("!restart"): # hardcode the !restart command (we can't restart from within an ordinary command) | if data.msg.startswith("!restart"): # hardcode the !restart command (we can't restart from within an ordinary command) | ||||
| if data.host in ADMINS: | |||||
| print "restarting bot per admin request..." | |||||
| if data.host in OWNERS: | |||||
| print "restarting bot per owner request..." | |||||
| return | return | ||||
| if line[0] == "PING": # If we are pinged, pong back to the server | if line[0] == "PING": # If we are pinged, pong back to the server | ||||
| @@ -2,7 +2,7 @@ | |||||
| # Check what events on IRC we can respond to. | # Check what events on IRC we can respond to. | ||||
| from irc.commands import test, help, git, link | |||||
| from irc.commands import test, help, git, link, chanops | |||||
| def check(connection, data, hook): | def check(connection, data, hook): | ||||
| data.parse_args() # parse command arguments into data.command and data.args | data.parse_args() # parse command arguments into data.command and data.args | ||||
| @@ -30,3 +30,7 @@ def check(connection, data, hook): | |||||
| ("[[" in data.msg and "]]" in data.msg) or | ("[[" in data.msg and "]]" in data.msg) or | ||||
| ("{{" in data.msg and "}}" in data.msg)): | ("{{" in data.msg and "}}" in data.msg)): | ||||
| link.call(connection, data) | link.call(connection, data) | ||||
| elif (data.command == "!voice" or data.command == "!devoice" or | |||||
| data.command == "!op" or data.command == "!deop"): | |||||
| chanops.call(connection, data) | |||||
| @@ -54,7 +54,7 @@ def report(msg, chans): | |||||
| frontend_conn.say(chan, msg) | frontend_conn.say(chan, msg) | ||||
| def check(rc): | def check(rc): | ||||
| """check to see if """ | |||||
| """check if we're supposed to report this message anywhere""" | |||||
| page_name = rc.page.lower() | page_name = rc.page.lower() | ||||
| pretty_msg = rc.pretty() | pretty_msg = rc.pretty() | ||||