Refactor: v0.3 merge

This commit is contained in:
Christian Rendina 2020-03-09 01:05:49 +01:00
commit a50e046583
1 changed files with 111 additions and 25 deletions

136
inline.py
View File

@ -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(""<a href=\"" + qValue + "\">HonusBot</a>", "HTML")
elif command.getMode() == "genericurl":
contentText = InputTextMessageContent(""<a href=\"" + qValue + "\">link</a>", "HTML")
else:
contentText = InputTextMessageContent("Error", "HTML")
return InlineQueryResultArticle(
id=uuid.uuid4().hex,
type="article",
title=qTitle,
input_message_content=InputTextMessageContent("<a href=\"" + picUrl + "\">H0nusBot</a>", "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()