├── .github ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CHANGELOG.rst ├── LICENSE ├── MANIFEST.in ├── README.rst ├── bootstrap.py ├── deploy └── after_push ├── development.cfg ├── main.cfg ├── production.cfg ├── setup.py ├── versions.cfg └── xenian ├── __init__.py └── bot ├── __init__.py ├── bot.py ├── commands ├── __init__.py ├── anime.py ├── animedatabase_utils │ ├── __init__.py │ ├── base_service.py │ ├── danbooru_service.py │ ├── message_queue.py │ ├── moebooru_service.py │ └── post.py ├── animedatabases.py ├── base.py ├── builtins.py ├── calculator.py ├── custom_db.py ├── database.py ├── decide.py ├── download.py ├── filters │ ├── __init__.py │ ├── admin.py │ ├── anime.py │ ├── custom_db.py │ └── download_mode.py ├── google.py ├── group_management.py ├── image_to_text.py ├── reverse_image_search.py ├── reverse_image_search_engines │ ├── __init__.py │ ├── base.py │ ├── bing.py │ ├── google.py │ ├── iqdb.py │ ├── saucenao.py │ ├── tineye.py │ ├── trace.py │ └── yandex.py ├── roll.py ├── templates │ ├── commands.html.mako │ ├── commands_raw.html.mako │ ├── commands_rst_direct.mako │ ├── commands_rst_indirect.mako │ ├── db_info.html.mako │ └── start.html.mako ├── translate.py └── urban_dictionary.py ├── settings.example.py ├── uploaders ├── __init__.py ├── base.py ├── file_system.py └── ssh.py └── utils ├── __init__.py ├── cache.py ├── data.py ├── file.py ├── progress_bar.py ├── telegram.py ├── telegram_files.py ├── temp_file.py └── template.py /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Please keep in mind that I do not store any of your sent commands or any other information about you. This means I can not search in any history and see where a bug occurred. I must be able to reproduce it. 4 | 5 | ✂ ---------------- ✂ ----------------- ✂ ---------------- ✂ ---------------- 6 | 7 | When submitting a feature or enhancement request: 8 | 9 | 1. Explain briefly what the enhancement is and why you think it would be useful. 10 | 2. Provide any other necessary or useful information regarding your issue, such as (code) examples or related links. 11 | 12 | --- 13 | 14 | When submitting a bug report: 15 | 1. Read the README and check if you can solve it with the information presented there. 16 | 2. Check the issues if there is already an existing one. 17 | 3. If nothing of the sort, please follow the following template: 18 | 19 | ✂ ---------------- ✂ ----------------- ✂ ---------------- ✂ ---------------- 20 | 21 | ### Summary 22 | 23 | ... 24 | 25 | ### Expected behavior 26 | 27 | ... 28 | 29 | ### Actual behavior 30 | 31 | ... 32 | 33 | ### Steps to reproduce (if needed) 34 | 35 | 1. First step 36 | 2. Second step 37 | 3. Third step 38 | 39 | You can also add Screenshots for a better understanding. 40 | 41 | ### Environment 42 | 43 | If the issues is about a command or other feature of the bot please add the following information: 44 | * Commands used 45 | 46 | If it is a development issue please add the following information: 47 | * OS (Windows, Linux, Mac) 48 | * Python Version 49 | * Version of this bot 50 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | #### Description 4 | Describe your changes in detail. Please do not forget to update the README if needed. 5 | 6 | #### Motivation and Context 7 | Why is this change required? What problem does it solve? 8 | If it fixes an open issue, please link to the issue here. 9 | 10 | #### How Has This Been Tested? 11 | Please describe in detail how you tested your changes. 12 | How does your change affects other areas of the code, etc. 13 | 14 | #### Screenshots (if appropriate): 15 | 16 | #### Types of changes 17 | 18 | - [ ] Bug fix (non-breaking change which fixes an issue) 19 | - [ ] New feature (non-breaking change which adds functionality) 20 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 21 | 22 | #### Checklist: 23 | 24 | If you're unsure about any of these, don't hesitate to ask. I am here to help! 25 | 26 | - [ ] My code follows the [code style](https://github.com/Nachtalb/XenianBot#code-contribution--pull-requests) of this project. 27 | - [ ] My code follows the [command concept](https://github.com/Nachtalb/XenianBot#command-concept) of this project. 28 | - [ ] My code follows the [uploaders concept](https://github.com/Nachtalb/XenianBot#uploaders-concept) of this project. 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Python template 2 | # Byte-compiled / optimized / DLL files 3 | __pycache__/ 4 | *.py[cod] 5 | *$py.class 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *.cover 48 | .hypothesis/ 49 | .pytest_cache/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | *.log 57 | local_settings.py 58 | db.sqlite3 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # Jupyter Notebook 74 | .ipynb_checkpoints 75 | 76 | # pyenv 77 | .python-version 78 | 79 | # celery beat schedule file 80 | celerybeat-schedule 81 | 82 | # SageMath parsed files 83 | *.sage.py 84 | 85 | # Environments 86 | .env 87 | .venv 88 | env/ 89 | venv/ 90 | ENV/ 91 | env.bak/ 92 | venv.bak/ 93 | 94 | # Spyder project settings 95 | .spyderproject 96 | .spyproject 97 | 98 | # Rope project settings 99 | .ropeproject 100 | 101 | # mkdocs documentation 102 | /site 103 | 104 | # mypy 105 | .mypy_cache/ 106 | ### VirtualEnv template 107 | # Virtualenv 108 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ 109 | .Python 110 | [Bb]in 111 | [Ii]nclude 112 | [Ll]ib 113 | [Ll]ib64 114 | [Ll]ocal 115 | [Ss]cripts 116 | pyvenv.cfg 117 | .venv 118 | pip-selfcheck.json 119 | ### macOS template 120 | # General 121 | .DS_Store 122 | .AppleDouble 123 | .LSOverride 124 | 125 | # Icon must end with two \r 126 | Icon 127 | 128 | # Thumbnails 129 | ._* 130 | 131 | # Files that might appear in the root of a volume 132 | .DocumentRevisions-V100 133 | .fseventsd 134 | .Spotlight-V100 135 | .TemporaryItems 136 | .Trashes 137 | .VolumeIcon.icns 138 | .com.apple.timemachine.donotpresent 139 | 140 | # Directories potentially created on remote AFP share 141 | .AppleDB 142 | .AppleDesktop 143 | Network Trash Folder 144 | Temporary Items 145 | .apdisk 146 | ### Linux template 147 | *~ 148 | 149 | # temporary files which can be created if a process still has a handle open of a deleted file 150 | .fuse_hidden* 151 | 152 | # KDE directory preferences 153 | .directory 154 | 155 | # Linux trash folder which might appear on any partition or disk 156 | .Trash-* 157 | 158 | # .nfs files are created when an open file is removed but is still being accessed 159 | .nfs* 160 | ### JetBrains template 161 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 162 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 163 | 164 | # User-specific stuff 165 | .idea/**/workspace.xml 166 | .idea/**/tasks.xml 167 | .idea/**/dictionaries 168 | .idea/**/shelf 169 | 170 | # Sensitive or high-churn files 171 | .idea/**/dataSources/ 172 | .idea/**/dataSources.ids 173 | .idea/**/dataSources.local.xml 174 | .idea/**/sqlDataSources.xml 175 | .idea/**/dynamic.xml 176 | .idea/**/uiDesigner.xml 177 | .idea/**/dbnavigator.xml 178 | 179 | # Gradle 180 | .idea/**/gradle.xml 181 | .idea/**/libraries 182 | 183 | # CMake 184 | cmake-build-debug/ 185 | cmake-build-release/ 186 | 187 | # Mongo Explorer plugin 188 | .idea/**/mongoSettings.xml 189 | 190 | # File-based project format 191 | *.iws 192 | 193 | # IntelliJ 194 | out/ 195 | 196 | # mpeltonen/sbt-idea plugin 197 | .idea_modules/ 198 | 199 | # JIRA plugin 200 | atlassian-ide-plugin.xml 201 | 202 | # Cursive Clojure plugin 203 | .idea/replstate.xml 204 | 205 | # Crashlytics plugin (for Android Studio and IntelliJ) 206 | com_crashlytics_export_strings.xml 207 | crashlytics.properties 208 | crashlytics-build.properties 209 | fabric.properties 210 | 211 | # Editor-based Rest Client 212 | .idea/httpRequests 213 | ### Windows template 214 | # Windows thumbnail cache files 215 | Thumbs.db 216 | ehthumbs.db 217 | ehthumbs_vista.db 218 | 219 | # Dump file 220 | *.stackdump 221 | 222 | # Folder config file 223 | [Dd]esktop.ini 224 | 225 | # Recycle Bin used on file shares 226 | $RECYCLE.BIN/ 227 | 228 | # Windows Installer files 229 | *.cab 230 | *.msi 231 | *.msix 232 | *.msm 233 | *.msp 234 | 235 | # Windows shortcuts 236 | *.lnk 237 | 238 | ### Bot 239 | settings.py 240 | log/ 241 | tmp/ 242 | data/ 243 | .idea/ 244 | buildout.cfg 245 | src/ 246 | .mr.developer.cfg 247 | .vim 248 | -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | Changelog 2 | ========= 3 | 4 | 2.5.3 (unreleased) 5 | ------------------ 6 | 7 | - Nothing changed yet. 8 | 9 | 10 | 2.5.2 (2019-02-15) 11 | ------------------ 12 | 13 | - Send as group of 10 by default for anime dbs 14 | - Send groups of 10 if max group size of 10 is exceeded by the user in anime db 15 | - Fix default option not working in ``extract_option_from_string`` 16 | - Print bot info on start 17 | - Remove obsolete prints 18 | - Fix turning of download mode 19 | - Fix crash when sending file to user when no url is defined 20 | - Version bump 21 | 22 | 23 | 2.5.1 (2019-01-12) 24 | ------------------ 25 | 26 | - Fix animedatabase filetype detection was not working properly 27 | 28 | 29 | 2.5.0 (2019-01-12) 30 | ------------------ 31 | 32 | - Fix not being able to group send images when the the image was a link instead of a local path 33 | - Replace Yandex- with Google-Translate 34 | - Remove ``/danbooru_latest`` and replace ``/danbooru_search`` with ``/danbooru`` 35 | - Add more danbooru like services. Instead of just danbooru we get safebooru and konachan too 36 | - Rename Danbooru class to AnimeDtabases because it fits better 37 | - Send images from danbooru search async to getting the images to increase speed and with the users feedbackloop 38 | - If possible send url of danbooru entry if the file could not be sent 39 | - Add ``zip`` to any animedatabase search to get the flies in a zip file + all information about the files 40 | - Install mr.developer 41 | - Update dependency versions 42 | 43 | 44 | 2.4.0 (2019-01-05) 45 | ------------------ 46 | 47 | - Show progressbar of items being sent by danbooru search / latest 48 | - Add @XenianBot to danbooru search / latest results 49 | - Remember where danbooru files where downloaded too 50 | - Be able to group the search result again with group=SIZE 51 | - Add danbooru API limit warning 52 | - Allow tag options and qualifiers like ``-some_tag``, ``*some`` & ``order:score`` 53 | - Handle different filtypes correctly 54 | 55 | 56 | 2.3.0 (2019-01-05) 57 | ------------------ 58 | 59 | - Define and use an api key for Danbooru with the ``DANBOORU_API_TOKEN`` variable 60 | - Increase Danbooru image limit from 5 to 20 61 | - Notify user about successful restart with ``/restart`` 62 | - Call not implemented when yandex translate is run without api key 63 | - Fix corrupt danbooru post image url 64 | - Send full file too together with the danbooru photos 65 | - Send danbooru images faster by not trying to send them as a group 66 | - Send danbooru images only available to premium members as long a premium account is given in the settings 67 | 68 | 69 | 2.2.0 (2018-12-26) 70 | ------------------ 71 | 72 | - Clear zip download queue with ``/zip_clear`` 73 | - Prevent too long message error on /commands rst 74 | 75 | 76 | 2.1.0 (2018-12-25) 77 | ------------------ 78 | 79 | - Added an alias command ``/help`` for ``/commands`` 80 | - Fixed usage alias commands overriding real commands 81 | - Add ``/zip_mode`` command which lets the user download items into a zip file 82 | 83 | 84 | 2.0.5 (2018-11-26) 85 | ------------------ 86 | 87 | - Fix error when saving a ``CustomNamedTemporaryFile`` file. 88 | - Fix not being able to save sticker as image in sticker search 89 | - Tell user that RIS is not working if the file path is not an url instead of just telling nothing 90 | - Fix not working alias function 91 | - Bump ``gTTS-token`` version to fix TTS 92 | - Fix file type when saving ``voices`` 93 | 94 | 95 | 2.0.4 (2018-11-26) 96 | ------------------ 97 | 98 | - Fix file permissions for copied files under unix systems 99 | 100 | 101 | 2.0.3 (2018-11-26) 102 | ------------------ 103 | 104 | - Fix file copying on unix devices 105 | 106 | 107 | 2.0.2 (2018-11-26) 108 | ------------------ 109 | 110 | - Fix ``/commands raw`` command not working 111 | 112 | 113 | 2.0.1 (2018-11-26) 114 | ------------------ 115 | 116 | - Fix paths in settings template 117 | 118 | 119 | 2.0.0 (2018-11-26) 120 | ------------------ 121 | 122 | Added 123 | ~~~~~ 124 | 125 | - Custom user specific databases, use commands ``/save`` and ``/save_mode`` more information in ``/commands`` 126 | - Be able to show custom DB entries with ``/db_list`` 127 | - Add functionality to add alias commands just like a normal command but a string as ``command`` value, which points to 128 | a ``command_name``. Additionally ``title``, ``description``, ``hidden`` and ``group`` can be set. 129 | - Autogenerate ResT for all commands with ``/commands rst``, but be aware that double whitespace are not printed. You 130 | get "\\ \\ " instead, which can be replaced. 131 | 132 | Changes 133 | ~~~~~~~ 134 | 135 | - Bot refactoring: 136 | - package ``xenian.bot`` instead of ``xenian_bot`` 137 | - buildout instead of pipenv 138 | - ``bin/bot`` instead of ``run_bot.py`` 139 | - Split utils up and put them in an ``utils`` package 140 | - Moved the download functions from the reverse search image commands to the utils 141 | - Combined the reverse search MessageHandlers to one 142 | - Cleaned up reverse search image command 143 | - Autodownload ffmpeg if it cannot be found by imageio 144 | - Improve windows compatibility with file handling 145 | - Optimized GIF downloader for local file uploader 146 | - Run GIF downloader asynchronously so users won't get stuck 147 | - Reply to user message on GIF download, so that the user sees to which GIF the message belongs 148 | - Improve TTS error message 149 | - Rename ``tty`` command to ``tts`` (Text-To-Speech) but add an ``tty`` alias for the time being 150 | - Be able to set a CallbackQueryHandler for a CallbackQuery sender 151 | 152 | 153 | [1.4.0] - 2018.05.18 154 | -------------------- 155 | 156 | 157 | Added 158 | ~~~~~ 159 | 160 | - Print raw commands list for the BotFather with ``/commands raw`` 161 | - New filter ``bot_admin``, check if current user is a bot admin 162 | - ``/random`` - send a random anime gif 163 | - ``/save_gif`` - *hidden* - save the gif replied to as an anime gif 164 | - ``/toggle_gif_save`` - *hidden* - toggle auto save sent gifs as anime gif 165 | - New filter ``anime_save_mode`` to determine if gif save mode is turned on 166 | - New filters for group permissions: ``bot_group_admin``, ``user_group_admin``, ``reply_user_group_admin``, 167 | ``all_admin_group`` 168 | 169 | 170 | Changes 171 | ~~~~~~~ 172 | 173 | - Move dabooru to the **Anime** group 174 | - Move Video Downloader to the Download group 175 | 176 | Fixed 177 | ~~~~~ 178 | 179 | - Use title for indirect commands instead of command name 180 | 181 | 182 | [1.3.0] - 2018.05.18 183 | -------------------- 184 | 185 | 186 | Added 187 | ~~~~~ 188 | 189 | - Mako Template Engine integration 190 | 191 | 192 | Changes 193 | ~~~~~~~ 194 | 195 | - Reimplemented the ``/commands`` command with a mako template 196 | 197 | Removed 198 | ~~~~~~~ 199 | 200 | - Temporarily remove the Instagram functionality, better version will come back in the future 201 | 202 | 203 | [1.2.1] - 2018.02.04 204 | -------------------- 205 | 206 | 207 | Changes 208 | ~~~~~~~ 209 | 210 | - Fix links to users 211 | - Fix image to text and translate command name in CHANGELOG and README 212 | 213 | 214 | [1.2.0] - 2018.02.04 215 | -------------------- 216 | 217 | 218 | Added 219 | ~~~~~ 220 | 221 | - Group setting for commands 222 | - Use MongoDB as database, configuration must be set in settings.py 223 | - Create collection in database with all user, messages and chats 224 | - ``/itt [-l LANG]`` - Image to Text: Extract text from images 225 | - ``/itt_lang`` - Languages for ItT: Available languages for Image to Text 226 | - ``/itt_translate [TEXT] [-lf LANG] [-lt LANG]`` - Image to Text Translation: Extract text from images and translate 227 | it. ``-lf`` (default: detect, /itt_lang) language on image, to ``-lt`` (default: en, normal language codes) language. 228 | 229 | 230 | Changes 231 | ~~~~~~~ 232 | 233 | - Fix command default options 234 | - Use Filters.all as default for MessageHandler 235 | - Yandex translate got new function for itself, it is used by the ``/translate`` and ``/itt_translate`` command. 236 | 237 | 238 | [1.1.2] - 2018-02-04 239 | -------------------- 240 | 241 | 242 | Changes 243 | ~~~~~~~ 244 | 245 | - Fixed non admin user could use ``/kick``, ``/ban``, ``/warn`` 246 | - Fixed grammatical error in a group management text 247 | 248 | 249 | [1.1.1] - 2018-02-01 250 | -------------------- 251 | 252 | 253 | Changes 254 | ~~~~~~~ 255 | 256 | - Add Yandex API Token to settings.example.py 257 | 258 | 259 | [1.1.0] - 2018-02-01 260 | -------------------- 261 | 262 | 263 | Added 264 | ~~~~~ 265 | 266 | - ``/tty [TEXT] [-l LANG]`` - Text to speech: Convert text the given text or the message replied to, to text. Use 267 | ``-l`` to define a language, like de, en or ru 268 | - ``/translate [TEXT] [-lf LANG] [-lt LANG]`` Translate a reply or a given text from ``-lf`` (default: detect) language 269 | to ``-lt`` (default: en) language 270 | - Add utility function ``get_option_from_string`` to extract options from strings sent by a user 271 | 272 | 273 | Changes 274 | ~~~~~~~ 275 | 276 | - Update reverse image search wait message if possible 277 | - Danbooru search only sends finished messages in private chat 278 | 279 | 280 | [1.0.0] - 2018-01-26 281 | -------------------- 282 | 283 | 284 | Added 285 | ~~~~~ 286 | 287 | - ``/delete`` has to be a reply to another message to delete this message and warn the user 288 | - ``/unwarn`` to remove all warnings from a user. Reply with it to a message 289 | - Add command ``/rules`` to show a groups rules 290 | - Add command ``/rules`` to show a groups rules 291 | - Add command ``/rules_define YOUR_RULES`` to define new rules in a group 292 | - Add command ``/rules_remvoe`` to remove the groups rules 293 | - Specify a time until user can return from kick with ``/kick [TIME]`` 294 | - Add ``/calc EQUATION`` command to calculate equations inside groups 295 | - Added ``LOG_LEVEL`` to settings 296 | - Instagram credentials to the ``settings.py``, which are used for one central Instagram account, instead of 297 | ``/instali`` and ``/instalo`` 298 | - ``/insta_follow PROFILE_LINK/S OR USERNAME/S`` Instagram Follow: Tell @XenianBot to follow a specific user on 299 | Instagram, this is used to access private accounts. 300 | - ``/contribute YOUR_REQUEST`` Send the supporters and admins a request of any kind 301 | - ``/error ERROR_DESCRIPTION`` If you have found an error please use this command. 302 | 303 | Changed 304 | ~~~~~~~ 305 | 306 | - Run math function asynchronous 307 | - Disable directly solving equations without command sent to groups 308 | - Fix not shortening solutions form the calculator 309 | - Fix message too long for Telegram, for too long solutions from the calculator 310 | - Remove all ``True`` and ``False`` before trying to calculate so a message with just “true” doesn’t get returned 311 | 312 | 313 | Removed 314 | ~~~~~~~ 315 | 316 | - ``/instali``, ``/instalo`` have both been removed in order to have one central defined account 317 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include xenian * 2 | recursive-include .github * 3 | recursive-include deploy * 4 | include *.txt 5 | include *.rst 6 | include *.md 7 | include *.py 8 | include LICENSE 9 | include development.cfg 10 | include main.cfg 11 | include production.cfg 12 | include versions.cfg 13 | 14 | recursive-exclude xenian/bot/utils/data * 15 | exclude xenian/bot/settings.py 16 | global-exclude *.pyc 17 | global-exclude ._* 18 | global-exclude *.mo 19 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | Xenian Bot 2 | ========== 3 | 4 | `@XenianBot `__ \| 5 | `GitHub `__ 6 | 7 | .. contents:: Table of Contents 8 | 9 | 10 | What I do 11 | --------- 12 | 13 | I am a personal assistant which can do various tasks for you. For example, I can do reverse image searches directly here 14 | in Telegram. To see my full capability, send me ``/commands`` and you will see everything available or go to 15 | `Commands <#commands>`__. 16 | 17 | If you like this bot you can rate it `here `__. 18 | 19 | 20 | Image Search 21 | ------------ 22 | 23 | Just send your photos to this bot and start an image reverse search. You can search for images, stickers and videos. 24 | 25 | In case you have *Downloade Mode* turned on (for downloading stickers etc.) you can either use ``/search`` on the image or 26 | turn *Download Mode* off with ``/download_mode`` (toggles on / off). 27 | 28 | Included engines: 29 | 30 | - IQDB 31 | - SauceNAO 32 | - Google 33 | - Yandex 34 | - Bing 35 | - Trace 36 | - TinEye 37 | 38 | Commands 39 | -------- 40 | 41 | Direct Commands: 42 | ~~~~~~~~~~~~~~~~ 43 | 44 | Base Group 45 | ^^^^^^^^^^ 46 | 47 | - ``/start`` - Initialize the bot 48 | - ``/commands`` - Show all available commands 49 | - ``/support`` - Contact bot maintainer for support of any kind 50 | - ``/contribute `` - Send the supporters and admins a request of any kind 51 | - ``/error `` - If you have found an error please use this command. 52 | - ``/help`` - Show all available commands 53 | 54 | Custom 55 | ^^^^^^ 56 | 57 | - ``/db_save_mode `` - Start database save mode and send your objects 58 | - ``/db_save `` - Reply to save an object to a custom database 59 | - ``/db_info`` - Show created databases 60 | - ``/db_delete`` - Delete selected database 61 | - ``/db_list`` - List the content of a DB 62 | 63 | Anime 64 | ^^^^^ 65 | 66 | - ``/random`` - Send random anime GIF 67 | - ``/danbooru `` - Search on danbooru 68 | - ``/safebooru `` - Search on safebooru 69 | - ``/konachan `` - Search on konachan 70 | - ``/yandere `` - Search on yandere 71 | 72 | Misc 73 | ^^^^ 74 | 75 | - ``/define `` - Define a word or a sentence via urban dictionary 76 | - ``/roll `` - Roll a number between 0 and 6 or give me another range 77 | - ``/decide`` - Yes or No 78 | - ``/maths`` - Show all available math functions 79 | - ``/calc `` - Solve an equation you send me, all math functions can be seen with /maths 80 | - ``/tts <-l LANG>`` - Convert text the given text or the message replied to, to text. Use `-l` to define a language, like de, en or ru 81 | - ``/translate <-lf LANG> <-lt LANG>`` - Translate a reply or a given text from `-lf` (default: detect) language to `-lt` (default: en) language 82 | 83 | Download 84 | ^^^^^^^^ 85 | 86 | - ``/download_mode`` - If on download stickers and gifs sent to the bot of off reverse search is reactivated. Does not work in groups 87 | - ``/zip_mode`` - If zip mode is on collect all downloads and zip them upon disabling zip mode 88 | - ``/zip_clear`` - Clear ZIP download queue 89 | - ``/download`` - Reply to media for download 90 | 91 | Image 92 | ^^^^^ 93 | 94 | - ``/search`` - Reply to media for reverse search 95 | - ``/itt <-l LANG>`` - Extract text from images 96 | - ``/itt_translate <-lf LANG> <-lt LANG>`` - Extract text from images and translate it. `-lf` (default: detect, /itt_lang) language on image, to `-lt` (default: en, normal language codes) language. 97 | - ``/itt_lang`` - Available languages for Image to Text 98 | 99 | Group Management 100 | ^^^^^^^^^^^^^^^^ 101 | 102 | - ``/ban`` - Ban a user. Reply to one of his messages with this command (Group Only) 103 | - ``/warn`` - Warn a user, after 3 warnings he get banned. Reply to one of his messages with this command (Group Only) 104 | - ``/kick