54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from util import hook
|
|
import re
|
|
import time
|
|
from subprocess import check_output
|
|
|
|
def getstatus():
|
|
try:
|
|
return check_output("sudo /bin/chch-status", shell=True).strip("\n").decode("utf-8")
|
|
except:
|
|
return "unbekannt"
|
|
|
|
@hook.command("status", autohelp=False)
|
|
def cmd_status(inp, reply=None):
|
|
"""status - Return the door status"""
|
|
reply("Chaostreff Status: %s" % (getstatus()))
|
|
|
|
@hook.event("TOPIC")
|
|
def topic_update(info, conn=None, chan=None):
|
|
"""topic_update -- Update the topic on TOPIC command"""
|
|
status = getstatus()
|
|
|
|
topic = info[-1]
|
|
|
|
sstr = "Status: %s" % (status)
|
|
if sstr in topic:
|
|
return
|
|
|
|
if 'Status: ' in topic:
|
|
new_topic = re.sub("Status: [^ ]*", sstr, topic)
|
|
else:
|
|
new_topic = "%s | %s" % (topic.rstrip(' |'), sstr)
|
|
|
|
if new_topic != topic:
|
|
conn.send("TOPIC %s :%s" % (chan, new_topic))
|
|
|
|
@hook.event("332")
|
|
def e332_update(info, conn=None, chan=None):
|
|
"""e332_update -- run after current topic was requested"""
|
|
chan = info[1]
|
|
topic_update(info, conn=conn, chan=chan)
|
|
|
|
@hook.singlethread
|
|
@hook.event("353")
|
|
def e353_update(info, conn=None, chan=None):
|
|
"""e353_update -- runs after a channel was joined"""
|
|
chan = info[2]
|
|
if chan.lower() == "#chaoschemnitz":
|
|
conn.send("PRIVMSG Chanserv :op #chaoschemnitz")
|
|
|
|
while True:
|
|
conn.send("TOPIC %s" % (chan))
|
|
time.sleep(60)
|
|
|