From 398a830d98089f6ca453e04dd7465a2f99126583 Mon Sep 17 00:00:00 2001 From: HonusBot Date: Sat, 28 Dec 2019 21:57:04 +0100 Subject: [PATCH] First Commit --- .gitignore | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 1 + inline.py | 93 +++++++++++++++++ 3 files changed, 394 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 inline.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6b5881 --- /dev/null +++ b/.gitignore @@ -0,0 +1,300 @@ +password.py + + + + + + +# Created by https://www.gitignore.io/api/vim,linux,macos,python,android,windows +# Edit at https://www.gitignore.io/?templates=vim,linux,macos,python,android,windows + +### Android ### +# Built application files +*.apk +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ + +### Android Patch ### +gen-external-apklibs +output.json + +# Replacement of .externalNativeBuild directories introduced +# with Android Studio 3.5. +.cxx/ + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist + +# Auto-generated tag files +tags + +# Persistent undo +[._]*.un~ + +# Coc configuration directory +.vim + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/vim,linux,macos,python,android,windows diff --git a/README.md b/README.md new file mode 100644 index 0000000..4dd9cdb --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +honusbot diff --git a/inline.py b/inline.py new file mode 100644 index 0000000..44eb3a2 --- /dev/null +++ b/inline.py @@ -0,0 +1,93 @@ +# File: MammottoInline.py +# Description: MammotroBot inline wrapper +# Author: Arvs100 +# Date: 25-12-2019 ~ 28-12-2019 +from telegram.ext import Updater, InlineQueryHandler, CommandHandler +import logging +from telegram import InlineQueryResultArticle, InputTextMessageContent, Bot +import uuid +import requests +import password + +class InlineBot: + def __init__(self): + + self.apiUrl = password.API_URL + + self.errorText = "Sowwy mawster, an ewror occuwed. ;;w;;" + + def callRequest(self, command, senderid, text): + r = requests.get(self.apiUrl, + headers={ + "botid":password.BOT_ID, + "botpassword":password.BOT_PASSWORD, + "command":command, + "replytouserid":"0", + "senderuserid":senderid, + "receiverchatid":"0", + "querytext":text + } + ) + + 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: + return self.errorText + + if r.headers["authorized"] != "true" or r.headers["success"] != "true" or r.headers["imageurl"] == "": + return self.errorText + + return r.headers["imageurl"] + + def start(self): + self.bot = Bot(token=password.BOT_TOKEN) + self.updater = Updater(bot=self.bot,use_context=True) + + print("h0nus bot\n"); + + self.dispatcher = self.updater.dispatcher + + logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) + self.logger = logging.getLogger(__name__) + + self.dispatcher.add_error_handler(self.errorHandler) + + inline_caps_handler = InlineQueryHandler(self.inlineQuery) + self.dispatcher.add_handler(inline_caps_handler) + print("Started!") + self.updater.start_polling() + self.updater.idle() + + def errorHandler(self, update, context): + """Log Errors caused by Updates.""" + self.logger.warning('Update "%s" caused error "%s"', update, context.error) + + 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, qTitle, qDesc, picUrl): + return InlineQueryResultArticle( + id=uuid.uuid4().hex, + type="article", + title=qTitle, + input_message_content=InputTextMessageContent("H0nusBot", "HTML"), + description=qDesc + ) + + def inlineQuery(self, update, context): + senderid = str(update.inline_query.from_user.id) + query = update.inline_query.query + results = list() + if not query: + results.append(self.makeResult("Pony", "yay!", self.callRequest("pony", senderid, query))) + results.append(self.makeResult("Clop", "clopclop", self.callRequest("clop", senderid, query))) + results.append(self.makeResult("Furry", "DON'T!", self.callRequest("furry", senderid, query))) + results.append(self.makeResult("Loli", "say hi to the police!", self.callRequest("loli", senderid, query))) + results.append(self.makeResult("Yiff", "yiff", self.callRequest("yiff", senderid, query))) + results.append(self.makeResult("Lewd", "lolies", self.callRequest("lolies", senderid, query))) + else: + results.append(self.makeResult("Cancer", "Search cancer about " + query, self.callRequest("cancer", senderid, query))) + context.bot.answer_inline_query(update.inline_query.id, results, 1, False) + +InlineBot().start()