itte/ramen.py

72 lines
2.6 KiB
Python
Raw Normal View History

from os import _exit
from random import randint
import config as cfg
from irc import IRC
class Ramen:
def __init__(self):
self.irc = IRC()
self.irc.is_debug = cfg.debug
self.bot_nick = cfg.bot_nick
self.admin_user = cfg.admin_user
self.admin_code = cfg.admin_code
self.req_prefix = cfg.req_prefix
def attach(self, socket):
self.sock = socket
def handle(self, channel, data):
"""Listen for requests in a channel and match responses."""
self.msg = self.irc.parse_msg(data, self.req_prefix)
if self.msg["req_chan"] == self.bot_nick:
# Respond to some commands only from admin user
if self.msg["user"].lower() == self.admin_user.lower() and \
self.admin_code in self.msg["req"]:
self.handle_admin_req(self.msg["req"], self.admin_user)
# Respond only in the channel the request was made
if channel == self.msg["req_chan"]:
# General commands
if self.msg["req"] == "rollcall" or self.msg["req"] == "help":
self.handle_rollcall()
elif self.msg["req"] == ("water " + self.bot_nick):
self.handle_water()
elif self.msg["req"] == ("botsnack " + self.bot_nick):
self.handle_botsnack()
def handle_admin_req(self, req, admin_user):
if "exit" in req:
self.irc.send("PRIVMSG", "Okay, okay, I'll leave. (´・ω・`)", \
recvr=admin_user, sock=self.sock)
self.irc.send("QUIT", ":noodling off", sock=self.sock)
_exit(0)
def handle_rollcall(self):
resp = (
"一、二、三、らーめん缶! "
"Hello, I am a ramen vending machine. "
"Please type a code for service: "
"!help "
"Support: +81 012-700-1MIO どうぞめしあがれ。"
)
self.irc.send("PRIVMSG", resp, recvr=self.msg["req_chan"], \
sock=self.sock)
def handle_water(self):
resp = [
("\x01ACTION happily pours the hot liquid into a bowl of noodles "
"and offers it to ") + self.msg["nick"] + "\x01",
" ^_^o自自o^_^ Cheers!",
"Water Level [/////////] 200% - Thanks! (^▽^)"
]
self.irc.send("PRIVMSG", resp[randint(0, len(resp)-1)], \
recvr=self.msg["req_chan"], sock=self.sock)
def handle_botsnack(self):
self.irc.send("PRIVMSG", "Ramen time anytime! ヽ(´▽`)/", \
recvr=self.msg["req_chan"], sock=self.sock)