diff --git a/inline.py b/inline.py index 5e37938..6b77167 100644 --- a/inline.py +++ b/inline.py @@ -9,29 +9,95 @@ import uuid import requests import password +BOT_VERSION = "0.3" + +class Command: + def __init__(self): + self.desc = "" + self.name = "" + self.headerField = "" + self.mode = "" + + def setMode(self, mode): + self.mode = mode + + def getMode(self): + return self.mode + + def setDesc(self, desc): + self.desc = desc + + def getDesc(self): + return self.desc + + def getName(self): + return self.name + + def setName(self, name): + self.name = name + + def getCommand(self): + return self.command + + def setHeaderField(self, param): + self.headerField = param + + def getHeaderField(self): + return self.headerField + class InlineBot: def __init__(self): - self.apiUrl = password.API_URL - self.errorText = "Sowwy mawster, an ewror occuwed. ;;w;;" + self.commands = [] - self.commands = { - "Pony" : "yay, ponies!", - "Clop" : "NSFW ponies", - "Furry" : "Furries" - "Loli" : "Cute lolis", - "Yiff" : "Yiff", - "Lewd" : "Say hi to the police", - "Rasoio" : "Dai facciamogli lo scherzo del rasoio!1!!" - } + #self.__loadConfig() ## todo v0.3.1 + self.__makeCommands() - def callRequest(self, command, senderid, text): + def __makeCommands(self): + cmd = Command() + + cmd.setName("Pony") + cmd.setDesc("yay, ponies!") + cmd.setMode("imageurl") + cmd.setHeaderField("imageurl") + self.commands.append(cmd) + + cmd.setName("Clop") + cmd.setDesc("NSFW ponies") + self.commands.append(cmd) + + cmd.setName("Furry") + cmd.setDesc("Furries") + self.commands.append(cmd) + + cmd.setName("Loli") + cmd.setDesc("Cute lolis") + self.commands.append(cmd) + + cmd.setName("Yiff") + cmd.setDesc("Yiff") + self.commands.append(cmd) + + cmd.setName("Lewd") + cmd.setDesc("Say hi to the police") + self.commands.append(cmd) + + cmd.setName("Rasoio") + cmd.setDesc("Dai facciamogli lo scherzo del rasoio!1!!") + cmd.setMode("genericurl") + cmd.setHeaderField("htmldescription") + self.commands.append(cmd) + + def callRequest(self, command, senderid, text = ""): + if not command: + return self.errorText + r = requests.get(self.apiUrl, headers={ "botid":password.BOT_ID, "botpassword":password.BOT_PASSWORD, - "command":command, + "command":command.getName().lower(), "replytouserid":"0", "senderuserid":senderid, "receiverchatid":"0", @@ -42,19 +108,19 @@ class InlineBot: if not r: return self.errorText - if not "authorized" in r.headers or not "success" in r.headers or not "htmldescription" in r.headers or not "imageurl" in r.headers: + if not "authorized" in r.headers or not "success" in r.headers or not "htmldescription" in r.headers or not "imageurl" in r.headers or not requiredField in r.headers: return self.errorText - if r.headers["authorized"] != "true" or r.headers["success"] != "true" or r.headers["imageurl"] == "": + if r.headers["authorized"] != "true" or r.headers["success"] != "true" or r.headers[requiredField] == "": return self.errorText - return r.headers["imageurl"] + return r.headers[command.getHeaderField()] def start(self): self.bot = Bot(token=password.BOT_TOKEN) self.updater = Updater(bot=self.bot,use_context=True) - print("h0nus bot\n"); + print("Inline bot v. {}".format(BOT_VERSION)) self.dispatcher = self.updater.dispatcher @@ -65,7 +131,9 @@ class InlineBot: inline_caps_handler = InlineQueryHandler(self.inlineQuery) self.dispatcher.add_handler(inline_caps_handler) + print("Started!") + self.updater.start_polling() self.updater.idle() @@ -75,14 +143,33 @@ class InlineBot: def commandStart(self, update, context): context.bot.send_message(chat_id=update.effective_chat.id, text="Inline cancer, clop, furry spammer (h0nus)",parse_mode="HTML") + + def makeResult(self, command, senderid, querySearch = ""): + if commnand == None: + return InlineQueryResultArticle( + id=uuid.uuid4().hex, + type="article", + title="Error", + input_message_content=InputTextMessageContent("Error", "HTML"), + description=self.errorText + ) - def makeResult(self, qTitle, qDesc, picUrl): + qValue = self.callRequest(command, senderid, querySearch) + contentText = "" + + if command.getMode() == "imageurl": + contentText = InputTextMessageContent(""HonusBot", "HTML") + elif command.getMode() == "genericurl": + contentText = InputTextMessageContent(""link", "HTML") + else: + contentText = InputTextMessageContent("Error", "HTML") + return InlineQueryResultArticle( id=uuid.uuid4().hex, type="article", - title=qTitle, - input_message_content=InputTextMessageContent("H0nusBot", "HTML"), - description=qDesc + title=command.getName(), + input_message_content=contentText + description=command.getDesc() ) def inlineQuery(self, update, context): @@ -90,11 +177,10 @@ class InlineBot: query = update.inline_query.query results = list() if not query: - for key in self.commands: - desc = self.commands[key] - results.append(self.makeResult(key, desc, self.callRequest(key.lower(), senderid, query))) + for command in self.commands: + results.append(self.makeResult(command, senderid) else: - results.append(self.makeResult("Cancer", "Search cancer about " + query, self.callRequest("cancer", senderid, query))) + results.append(self.makeResult(self.cancerCommand, senderid, query)) context.bot.answer_inline_query(update.inline_query.id, results, 1, False) InlineBot().start()