|
@@ -0,0 +1,64 @@ |
|
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
|
|
|
|
|
|
|
# Manage wiki tasks from IRC, and check on thread status. |
|
|
|
|
|
|
|
|
|
|
|
import threading |
|
|
|
|
|
|
|
|
|
|
|
from irc.base_command import BaseCommand |
|
|
|
|
|
from wiki import task_manager |
|
|
|
|
|
from config.irc import * |
|
|
|
|
|
|
|
|
|
|
|
class ChanOps(BaseCommand): |
|
|
|
|
|
def get_hooks(self): |
|
|
|
|
|
return ["msg"] |
|
|
|
|
|
|
|
|
|
|
|
def get_help(self, command): |
|
|
|
|
|
return "Manage wiki tasks from IRC, and check on thread status." |
|
|
|
|
|
|
|
|
|
|
|
def check(self, data): |
|
|
|
|
|
if data.is_command and data.command in ["tasks", "threads", "tasklist"]: |
|
|
|
|
|
return True |
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
def process(self, data): |
|
|
|
|
|
self.data = data |
|
|
|
|
|
if data.host not in OWNERS: |
|
|
|
|
|
self.connection.reply(data, "at this time, you must be a bot owner to use this command.") |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
if not data.args: |
|
|
|
|
|
if data.command == "!tasklist": |
|
|
|
|
|
self.do_list() |
|
|
|
|
|
else: |
|
|
|
|
|
self.connection.reply(data, "no arguments provided. Maybe you wanted '!{cmnd} list', '!{cmnd} start', or '!{cmnd} listall'?".format(cmnd=data.command)) |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
if data.args[0] == "list": |
|
|
|
|
|
self.do_list() |
|
|
|
|
|
|
|
|
|
|
|
elif data.args[0] == "start": |
|
|
|
|
|
self.do_start() |
|
|
|
|
|
|
|
|
|
|
|
elif data.args[0] == "listall": |
|
|
|
|
|
self.do_listall() |
|
|
|
|
|
|
|
|
|
|
|
else: # they asked us to do something we don't know |
|
|
|
|
|
self.connection.reply(data, "unknown argument: \x0303{}\x0301.".format(data.args[0])) |
|
|
|
|
|
|
|
|
|
|
|
def do_list(self): |
|
|
|
|
|
threads = threading.enumerate() |
|
|
|
|
|
for thread in threads: |
|
|
|
|
|
self.connection.reply(data, thread.name) |
|
|
|
|
|
|
|
|
|
|
|
def do_listall(self): |
|
|
|
|
|
tasks = task_manager.task_list.keys() |
|
|
|
|
|
self.connection.reply(data, ', '.join(tasks)) |
|
|
|
|
|
|
|
|
|
|
|
def do_start(self): |
|
|
|
|
|
kwargs = {} |
|
|
|
|
|
try: |
|
|
|
|
|
task_manager.start_task(data.args[1], **kwargs) |
|
|
|
|
|
except IndexError: # no task name given |
|
|
|
|
|
self.connection.reply(data, "what task do you want me to start?") |
|
|
|
|
|
else: |
|
|
|
|
|
self.connection.reply(data, "task '{}' started.".format(data.args[1])) |