diff --git a/.gitignore b/.gitignore index d979a254..15ca555d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,31 @@ -config.ini -.idea/ -.vscode/ -__pycache__ +# Royalnet ignores +config*.toml downloads/ -ignored/ -markovmodels/ -logs/ -*.egg-info/ -.pytest_cache/ + + +# Python ignores +**/__pycache__/ dist/ -build/ -venv/ +*.egg-info/ +**/*.pyc + +# PyCharm ignores +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf +.idea/**/contentModel.xml +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml +.idea/**/gradle.xml +.idea/**/libraries +.idea/**/markdown-navigator.xml +.idea/**/markdown-exported-files.xml +.idea/**/misc.xml +.idea/**/*.iml \ No newline at end of file diff --git a/README.md b/README.md index 9361510c..f808c9b0 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,3 @@ # `royalpack` [![PyPI](https://img.shields.io/pypi/v/royalpack.svg)](https://pypi.org/project/royalpack/) The Royalnet Pack used in the Royal Games community! - -## Commands - -### `ciaoruozi` - -### `color` - -### `cv` - -### `diario` - -### `rage` - -### `reminder` - -### `ship` - -### `smecds` - -### `videochannel` - -### `trivia` - -### `matchmaking` - -### `pause` - -### `play` - -### `playmode` - -### `queue` - -### `skip` - -### `summon` - -### `youtube` - -### `soundcloud` - -### `zawarudo` - -### `emojify` - -### `leagueoflegends` - -### `diarioquote` - -### `mp3` - -### `peertube` - -## Stars - -### `/api/diario/list` - -### `/api/diario/get/{id}` - -### `/api/user/list` - -### `/api/user/get/{id}` diff --git a/poetry.lock b/poetry.lock index ea5c11fe..401273c1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,7 +1,54 @@ +[[package]] +category = "main" +description = "Async http client/server framework (asyncio)" +name = "aiohttp" +optional = false +python-versions = ">=3.5.3" +version = "3.6.2" + +[package.dependencies] +async-timeout = ">=3.0,<4.0" +attrs = ">=17.3.0" +chardet = ">=2.0,<4.0" +multidict = ">=4.5,<5.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["aiodns", "brotlipy", "cchardet"] + +[[package]] +category = "main" +description = "Timeout context manager for asyncio programs" +name = "async-timeout" +optional = false +python-versions = ">=3.5.3" +version = "3.0.1" + +[[package]] +category = "main" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2019.9.11" + [[package]] category = "main" description = "Foreign Function Interface for Python calling C code." -marker = "sys_platform == \"linux\"" name = "cffi" optional = false python-versions = "*" @@ -10,10 +57,49 @@ version = "1.13.2" [package.dependencies] pycparser = "*" +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + +[[package]] +category = "main" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.4.1" + +[[package]] +category = "main" +description = "Colored terminal output for Python's logging module" +name = "coloredlogs" +optional = false +python-versions = "*" +version = "10.0" + +[package.dependencies] +colorama = "*" +humanfriendly = ">=4.7" + +[package.extras] +cron = ["capturer (>=2.4)"] + [[package]] category = "main" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -marker = "sys_platform == \"linux\"" name = "cryptography" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" @@ -46,50 +132,131 @@ tzlocal = "*" [[package]] category = "main" -description = "Discover and load entry points from installed packages." -name = "entrypoints" +description = "A python wrapper for the Discord API" +name = "discord.py" optional = false -python-versions = ">=2.7" -version = "0.3" - -[[package]] -category = "main" -description = "Low-level, pure Python DBus protocol wrapper." -marker = "sys_platform == \"linux\"" -name = "jeepney" -optional = false -python-versions = ">=3.5" -version = "0.4.1" - -[package.extras] -dev = ["testpath"] - -[[package]] -category = "main" -description = "Store and access your passwords safely." -name = "keyring" -optional = false -python-versions = ">=3.5" -version = "19.2.0" +python-versions = ">=3.5.3" +version = "1.3.0a2155+gf11fb25" [package.dependencies] -entrypoints = "*" -pywin32-ctypes = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1" -secretstorage = "*" +aiohttp = ">=3.6.0,<3.7.0" +websockets = ">=6.0,<7.0 || >7.0,<8.0 || >8.0,<8.0.1 || >8.0.1,<9.0" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs", "pytest-flake8", "pytest-black-multipy"] +docs = ["sphinx (1.8.5)", "sphinxcontrib_trio (1.1.0)", "sphinxcontrib-websupport"] +voice = ["PyNaCl (1.3.0)"] + +[package.source] +reference = "f11fb254f6a37c635e9056cb895de7904774ac22" +type = "git" +url = "https://github.com/Steffo99/discord.py" +[[package]] +category = "main" +description = "Python bindings for FFmpeg - with complex filtering support" +name = "ffmpeg-python" +optional = false +python-versions = "*" +version = "0.2.0" + +[package.dependencies] +future = "*" + +[package.extras] +dev = ["future (0.17.1)", "numpy (1.16.4)", "pytest-mock (1.10.4)", "pytest (4.6.1)", "Sphinx (2.1.0)", "tox (3.12.1)"] + +[[package]] +category = "main" +description = "Clean single-source support for Python 3 and 2" +name = "future" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.18.2" + +[[package]] +category = "main" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +name = "h11" +optional = false +python-versions = "*" +version = "0.8.1" + +[[package]] +category = "main" +description = "A collection of framework independent HTTP protocol utils." +marker = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"pypy\"" +name = "httptools" +optional = false +python-versions = "*" +version = "0.0.13" + +[[package]] +category = "main" +description = "Human friendly output for text interfaces using Python" +name = "humanfriendly" +optional = false +python-versions = "*" +version = "4.18" + +[package.dependencies] +pyreadline = "*" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8" + +[[package]] +category = "main" +description = "multidict implementation" +name = "multidict" +optional = false +python-versions = ">=3.5" +version = "4.6.1" + +[[package]] +category = "main" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +name = "psycopg2-binary" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "2.8.4" [[package]] category = "main" description = "C parser in Python" -marker = "sys_platform == \"linux\"" name = "pycparser" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.19" +[[package]] +category = "main" +description = "Python binding to the Networking and Cryptography (NaCl) library" +name = "pynacl" +optional = false +python-versions = "*" +version = "1.3.0" + +[package.dependencies] +cffi = ">=1.4.1" +six = "*" + +[package.extras] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] +tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)", "hypothesis (>=3.27.0)"] + +[[package]] +category = "main" +description = "A python implmementation of GNU readline." +marker = "sys_platform == \"win32\"" +name = "pyreadline" +optional = false +python-versions = "*" +version = "2.1" + [[package]] category = "main" description = "Extensions to the standard Python datetime module" @@ -101,6 +268,24 @@ version = "2.8.1" [package.dependencies] six = ">=1.5" +[[package]] +category = "main" +description = "We have made you a wrapper you can't refuse" +name = "python-telegram-bot" +optional = false +python-versions = "*" +version = "12.2.0" + +[package.dependencies] +certifi = "*" +cryptography = "*" +future = ">=0.16.0" +tornado = ">=5.1" + +[package.extras] +json = ["ujson"] +socks = ["pysocks"] + [[package]] category = "main" description = "World timezone definitions, modern and historical" @@ -109,15 +294,6 @@ optional = false python-versions = "*" version = "2019.3" -[[package]] -category = "main" -description = "" -marker = "sys_platform == \"win32\"" -name = "pywin32-ctypes" -optional = false -python-versions = "*" -version = "0.2.0" - [[package]] category = "main" description = "Alternative regular expression module, to replace re." @@ -128,43 +304,105 @@ version = "2019.11.1" [[package]] category = "main" -description = "A multipurpose bot and web framework" +description = "" name = "royalnet" optional = false -python-versions = ">=3.8,<4.0" + python-versions = "^3.8" version = "5.1a1" [package.dependencies] -dateparser = ">=0.7.2,<0.8.0" -keyring = ">=19.2.0,<20.0.0" +dateparser = "^0.7.2" +toml = "^0.10.0" + +[package.dependencies.coloredlogs] +optional = true +version = "^10.0" + +[package.dependencies."discord.py"] +optional = true +version = "branch master" + +[package.dependencies.ffmpeg_python] +optional = true +version = "~0.2.0" + +[package.dependencies.psycopg2_binary] +optional = true +version = "^2.8.4" + +[package.dependencies.pynacl] +optional = true +version = "^1.3.0" + +[package.dependencies.python_telegram_bot] +optional = true +version = "^12.2.0" + +[package.dependencies.sentry_sdk] +optional = true +version = "~0.13.2" + +[package.dependencies.sqlalchemy] +optional = true +version = "^1.3.10" + +[package.dependencies.starlette] +optional = true +version = "^0.12.13" + +[package.dependencies.uvicorn] +optional = true +version = "^0.10.7" + +[package.dependencies.websockets] +optional = true +version = "^8.1" + +[package.dependencies.youtube_dl] +optional = true +version = "*" [package.extras] -alchemy_easy = ["psycopg2_binary (>=2.8.4,<3.0.0)", "sqlalchemy (>=1.3.10,<2.0.0)"] -alchemy_hard = ["psycopg2 (>=2.8.4,<3.0.0)", "sqlalchemy (>=1.3.10,<2.0.0)"] -bard = ["ffmpeg_python (>=0.2.0,<0.3.0)", "youtube-dl"] -constellation = ["starlette (>=0.12.13,<0.13.0)", "uvicorn (>=0.10.7,<0.11.0)"] -discord = ["discord.py", "pynacl (>=1.3.0,<2.0.0)"] -herald = ["websockets (>=8.1,<9.0)"] -sentry = ["sentry_sdk (>=0.13.2,<0.14.0)"] -telegram = ["python_telegram_bot (>=12.2.0,<13.0.0)"] +alchemy_easy = ["sqlalchemy (^1.3.10)", "psycopg2_binary (^2.8.4)"] +alchemy_hard = ["sqlalchemy (^1.3.10)", "psycopg2 (^2.8.4)"] +bard = ["ffmpeg_python (~0.2.0)", "youtube-dl"] +coloredlogs = ["coloredlogs (^10.0)"] +constellation = ["starlette (^0.12.13)", "uvicorn (^0.10.7)"] +discord = ["discord.py", "pynacl (^1.3.0)"] +herald = ["websockets (^8.1)"] +sentry = ["sentry_sdk (~0.13.2)"] +telegram = ["python_telegram_bot (^12.2.0)"] [package.source] -reference = "" -type = "file" -url = "../royalnet/dist/royalnet-5.1a1.tar.gz" +reference = "c4bc1811825d7b2609f587a4890ddb5b8a618cf6" +type = "git" + url = "https://github.com/Steffo99/royalnet/" [[package]] category = "main" -description = "Python bindings to FreeDesktop.org Secret Service API" -marker = "sys_platform == \"linux\"" -name = "secretstorage" +description = "Python client for Sentry (https://getsentry.com)" +name = "sentry-sdk" optional = false -python-versions = ">=3.5" -version = "3.1.1" +python-versions = "*" +version = "0.13.4" [package.dependencies] -cryptography = "*" -jeepney = "*" +certifi = "*" +urllib3 = ">=1.10.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.5)"] +beam = ["beam (>=2.12)"] +bottle = ["bottle (>=0.12.13)"] +celery = ["celery (>=3)"] +django = ["django (>=1.8)"] +falcon = ["falcon (>=1.4)"] +flask = ["flask (>=0.11)", "blinker (>=1.1)"] +pyspark = ["pyspark (>=2.4.4)"] +rq = ["0.6"] +sanic = ["sanic (>=0.8)"] +sqlalchemy = ["sqlalchemy (>=1.2)"] +tornado = ["tornado (>=5)"] [[package]] category = "main" @@ -174,6 +412,53 @@ optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" version = "1.13.0" +[[package]] +category = "main" +description = "Database Abstraction Library" +name = "sqlalchemy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.11" + +[package.extras] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mysql = ["mysqlclient"] +oracle = ["cx-oracle"] +postgresql = ["psycopg2"] +postgresql_pg8000 = ["pg8000"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql"] + +[[package]] +category = "main" +description = "The little ASGI library that shines." +name = "starlette" +optional = false +python-versions = ">=3.6" +version = "0.12.13" + +[package.extras] +full = ["aiofiles", "graphene", "itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "ujson"] + +[[package]] +category = "main" +description = "Python Library for Tom's Obvious, Minimal Language" +name = "toml" +optional = false +python-versions = "*" +version = "0.10.0" + +[[package]] +category = "main" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "tornado" +optional = false +python-versions = ">= 3.5" +version = "6.0.3" + [[package]] category = "main" description = "tzinfo object for the local timezone" @@ -185,11 +470,102 @@ version = "2.0.0" [package.dependencies] pytz = "*" +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +version = "1.25.7" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "main" +description = "The lightning-fast ASGI server." +name = "uvicorn" +optional = false +python-versions = "*" +version = "0.10.8" + +[package.dependencies] +click = ">=7.0.0,<8.0.0" +h11 = ">=0.8.0,<0.9.0" +httptools = "0.0.13" +uvloop = ">=0.14.0" +websockets = ">=8.0.0,<9.0.0" + +[[package]] +category = "main" +description = "Fast implementation of asyncio event loop on top of libuv" +marker = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"pypy\"" +name = "uvloop" +optional = false +python-versions = "*" +version = "0.14.0" + +[[package]] +category = "main" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +name = "websockets" +optional = false +python-versions = ">=3.6.1" +version = "8.1" + +[[package]] +category = "main" +description = "Yet another URL library" +name = "yarl" +optional = false +python-versions = ">=3.5.3" +version = "1.3.0" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[[package]] +category = "main" +description = "YouTube video downloader" +name = "youtube-dl" +optional = false +python-versions = "*" +version = "2019.11.22" + [metadata] -content-hash = "817fb50e91869e1dcee16160a92126fd5e4af4186990bf8fecf2523a9109f5fa" +content-hash = "e358039cf58db05d50f73138e8b431bcbe8476bc60181233645f2064ee496023" python-versions = "^3.8" [metadata.files] +aiohttp = [ + {file = "aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e"}, + {file = "aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec"}, + {file = "aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48"}, + {file = "aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59"}, + {file = "aiohttp-3.6.2-cp36-cp36m-win32.whl", hash = "sha256:344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a"}, + {file = "aiohttp-3.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17"}, + {file = "aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a"}, + {file = "aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd"}, + {file = "aiohttp-3.6.2-cp37-cp37m-win32.whl", hash = "sha256:b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965"}, + {file = "aiohttp-3.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654"}, + {file = "aiohttp-3.6.2-py3-none-any.whl", hash = "sha256:460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4"}, + {file = "aiohttp-3.6.2.tar.gz", hash = "sha256:259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326"}, +] +async-timeout = [ + {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, + {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +certifi = [ + {file = "certifi-2019.9.11-py2.py3-none-any.whl", hash = "sha256:fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef"}, + {file = "certifi-2019.9.11.tar.gz", hash = "sha256:e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50"}, +] cffi = [ {file = "cffi-1.13.2-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:3c9fff570f13480b201e9ab69453108f6d98244a7f495e91b6c654a47486ba43"}, {file = "cffi-1.13.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c5e309ec482556397cb21ede0350c5e82f0eb2621de04b2633588d118da4396"}, @@ -225,6 +601,22 @@ cffi = [ {file = "cffi-1.13.2-cp38-cp38-win_amd64.whl", hash = "sha256:2781e9ad0e9d47173c0093321bb5435a9dfae0ed6a762aabafa13108f5f7b2ba"}, {file = "cffi-1.13.2.tar.gz", hash = "sha256:599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346"}, ] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +click = [ + {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, + {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, +] +colorama = [ + {file = "colorama-0.4.1-py2.py3-none-any.whl", hash = "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"}, + {file = "colorama-0.4.1.tar.gz", hash = "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d"}, +] +coloredlogs = [ + {file = "coloredlogs-10.0-py2.py3-none-any.whl", hash = "sha256:34fad2e342d5a559c31b6c889e8d14f97cb62c47d9a2ae7b5ed14ea10a79eff8"}, + {file = "coloredlogs-10.0.tar.gz", hash = "sha256:b869a2dda3fa88154b9dd850e27828d8755bfab5a838a1c97fbc850c6e377c36"}, +] cryptography = [ {file = "cryptography-2.8-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8"}, {file = "cryptography-2.8-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2"}, @@ -252,33 +644,125 @@ dateparser = [ {file = "dateparser-0.7.2-py2.py3-none-any.whl", hash = "sha256:983d84b5e3861cb0aa240cad07f12899bb10b62328aae188b9007e04ce37d665"}, {file = "dateparser-0.7.2.tar.gz", hash = "sha256:e1eac8ef28de69a554d5fcdb60b172d526d61924b1a40afbbb08df459a36006b"}, ] -entrypoints = [ - {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, - {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, +"discord.py" = [] +ffmpeg-python = [ + {file = "ffmpeg-python-0.2.0.tar.gz", hash = "sha256:65225db34627c578ef0e11c8b1eb528bb35e024752f6f10b78c011f6f64c4127"}, + {file = "ffmpeg_python-0.2.0-py3-none-any.whl", hash = "sha256:ac441a0404e053f8b6a1113a77c0f452f1cfc62f6344a769475ffdc0f56c23c5"}, ] -jeepney = [ - {file = "jeepney-0.4.1-py3-none-any.whl", hash = "sha256:f6a3f93464a0cf052f4e87da3c8b3ed1e27696758fb9739c63d3a74d9a1b6774"}, - {file = "jeepney-0.4.1.tar.gz", hash = "sha256:13806f91a96e9b2623fd2a81b950d763ee471454aafd9eb6d75dbe7afce428fb"}, +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] -keyring = [ - {file = "keyring-19.2.0-py2.py3-none-any.whl", hash = "sha256:f5bb20ea6c57c2360daf0c591931c9ea0d7660a8d9e32ca84d63273f131ea605"}, - {file = "keyring-19.2.0.tar.gz", hash = "sha256:91037ccaf0c9a112a76f7740e4a416b9457a69b66c2799421581bee710a974b3"}, +h11 = [ + {file = "h11-0.8.1-py2.py3-none-any.whl", hash = "sha256:f2b1ca39bfed357d1f19ac732913d5f9faa54a5062eca7d2ec3a916cfb7ae4c7"}, + {file = "h11-0.8.1.tar.gz", hash = "sha256:acca6a44cb52a32ab442b1779adf0875c443c689e9e028f8d831a3769f9c5208"}, +] +httptools = [ + {file = "httptools-0.0.13.tar.gz", hash = "sha256:e00cbd7ba01ff748e494248183abc6e153f49181169d8a3d41bb49132ca01dfc"}, +] +humanfriendly = [ + {file = "humanfriendly-4.18-py2.py3-none-any.whl", hash = "sha256:23057b10ad6f782e7bc3a20e3cb6768ab919f619bbdc0dd75691121bbde5591d"}, + {file = "humanfriendly-4.18.tar.gz", hash = "sha256:33ee8ceb63f1db61cce8b5c800c531e1a61023ac5488ccde2ba574a85be00a85"}, +] +idna = [ + {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, + {file = "idna-2.8.tar.gz", hash = "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"}, +] +multidict = [ + {file = "multidict-4.6.1-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:318aadf1cfb6741c555c7dd83d94f746dc95989f4f106b25b8a83dfb547f2756"}, + {file = "multidict-4.6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9c890978e2b37dd0dc1bd952da9a5d9f245d4807bee33e3517e4119c48d66f8c"}, + {file = "multidict-4.6.1-cp35-cp35m-win32.whl", hash = "sha256:efaf1b18ea6c1f577b1371c0159edbe4749558bfe983e13aa24d0a0c01e1ad7b"}, + {file = "multidict-4.6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:07f9a6bf75ad675d53956b2c6a2d4ef2fa63132f33ecc99e9c24cf93beb0d10b"}, + {file = "multidict-4.6.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:42cdd649741a14b0602bf15985cad0dd4696a380081a3319cd1ead46fd0f0fab"}, + {file = "multidict-4.6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:205a011e636d885af6dd0029e41e3514a46e05bb2a43251a619a6e8348b96fc0"}, + {file = "multidict-4.6.1-cp36-cp36m-win32.whl", hash = "sha256:cfec9d001a83dc73580143f3c77e898cf7ad78b27bb5e64dbe9652668fcafec7"}, + {file = "multidict-4.6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8d919034420378132d074bf89df148d0193e9780c9fe7c0e495e895b8af4d8a2"}, + {file = "multidict-4.6.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:a37433ce8cdb35fc9e6e47e1606fa1bfd6d70440879038dca7d8dd023197eaa9"}, + {file = "multidict-4.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1b605272c558e4c659dbaf0fb32a53bfede44121bcf77b356e6e906867b958b7"}, + {file = "multidict-4.6.1-cp37-cp37m-win32.whl", hash = "sha256:891b7e142885e17a894d9d22b0349b92bb2da4769b4e675665d0331c08719be5"}, + {file = "multidict-4.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:250632316295f2311e1ed43e6b26a63b0216b866b45c11441886ac1543ca96e1"}, + {file = "multidict-4.6.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:2bc9c2579312c68a3552ee816311c8da76412e6f6a9cf33b15152e385a572d2a"}, + {file = "multidict-4.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0ffe4d4d28cbe9801952bfb52a8095dd9ffecebd93f84bdf973c76300de783c5"}, + {file = "multidict-4.6.1-cp38-cp38-win32.whl", hash = "sha256:87e26d8b89127c25659e962c61a4c655ec7445d19150daea0759516884ecb8b4"}, + {file = "multidict-4.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:c626029841ada34c030b94a00c573a0c7575fe66489cde148785b6535397d675"}, + {file = "multidict-4.6.1.tar.gz", hash = "sha256:5159c4975931a1a78bf6602bbebaa366747fce0a56cb2111f44789d2c45e379f"}, +] +psycopg2-binary = [ + {file = "psycopg2-binary-2.8.4.tar.gz", hash = "sha256:3a2522b1d9178575acee4adf8fd9f979f9c0449b00b4164bb63c3475ea6528ed"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:890167d5091279a27e2505ff0e1fb273f8c48c41d35c5b92adbf4af80e6b2ed6"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:dbc5cd56fff1a6152ca59445178652756f4e509f672e49ccdf3d79c1043113a4"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:7f42a8490c4fe854325504ce7a6e4796b207960dabb2cbafe3c3959cb00d1d7e"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-win32.whl", hash = "sha256:8578d6b8192e4c805e85f187bc530d0f52ba86c39172e61cd51f68fddd648103"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-win_amd64.whl", hash = "sha256:5dd90c5438b4f935c9d01fcbad3620253da89d19c1f5fca9158646407ed7df35"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:9aadff9032e967865f9778485571e93908d27dab21d0fdfdec0ca779bb6f8ad9"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:659c815b5b8e2a55193ede2795c1e2349b8011497310bb936da7d4745652823b"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:2166e770cb98f02ed5ee2b0b569d40db26788e0bf2ec3ae1a0d864ea6f1d8309"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:7e6e3c52e6732c219c07bd97fff6c088f8df4dae3b79752ee3a817e6f32e177e"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-win32.whl", hash = "sha256:040234f8a4a8dfd692662a8308d78f63f31a97e1c42d2480e5e6810c48966a29"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-win_amd64.whl", hash = "sha256:69b13fdf12878b10dc6003acc8d0abf3ad93e79813fd5f3812497c1c9fb9be49"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:19dc39616850342a2a6db70559af55b22955f86667b5f652f40c0e99253d9881"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:9f24f383a298a0c0f9b3113b982e21751a8ecde6615494a3f1470eb4a9d70e9e"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:eaed1c65f461a959284649e37b5051224f4db6ebdc84e40b5e65f2986f101a08"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-win32.whl", hash = "sha256:4c6717962247445b4f9e21c962ea61d2e884fc17df5ddf5e35863b016f8a1f03"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-win_amd64.whl", hash = "sha256:84156313f258eafff716b2961644a4483a9be44a5d43551d554844d15d4d224e"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:3b5deaa3ee7180585a296af33e14c9b18c218d148e735c7accf78130765a47e3"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5057669b6a66aa9ca118a2a860159f0ee3acf837eda937bdd2a64f3431361a2d"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:afd96845e12638d2c44d213d4810a08f4dc4a563f9a98204b7428e567014b1cd"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-win32.whl", hash = "sha256:a73021b44813b5c84eda4a3af5826dd72356a900bac9bd9dd1f0f81ee1c22c2f"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-win_amd64.whl", hash = "sha256:407af6d7e46593415f216c7f56ba087a9a42bd6dc2ecb86028760aa45b802bd7"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:3aa773580f85a28ffdf6f862e59cb5a3cc7ef6885121f2de3fca8d6ada4dbf3b"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:eac8a3499754790187bb00574ab980df13e754777d346f85e0ff6df929bcd964"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:7a1cb80e35e1ccea3e11a48afe65d38744a0e0bde88795cc56a4d05b6e4f9d70"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-win32.whl", hash = "sha256:086f7e89ec85a6704db51f68f0dcae432eff9300809723a6e8782c41c2f48e03"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b73ddf033d8cd4cc9dfed6324b1ad2a89ba52c410ef6877998422fcb9c23e3a8"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:4c3c09fb674401f630626310bcaf6cd6285daf0d5e4c26d6e55ca26a2734e39b"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:18ca813fdb17bc1db73fe61b196b05dd1ca2165b884dd5ec5568877cabf9b039"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:50446fae5681fc99f87e505d4e77c9407e683ab60c555ec302f9ac9bffa61103"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-win32.whl", hash = "sha256:98e10634792ac0e9e7a92a76b4991b44c2325d3e7798270a808407355e7bb0a1"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-win_amd64.whl", hash = "sha256:b8f490f5fad1767a1331df1259763b3bad7d7af12a75b950c2843ba319b2415f"}, ] pycparser = [ {file = "pycparser-2.19.tar.gz", hash = "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"}, ] +pynacl = [ + {file = "PyNaCl-1.3.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:2424c8b9f41aa65bbdbd7a64e73a7450ebb4aa9ddedc6a081e7afcc4c97f7621"}, + {file = "PyNaCl-1.3.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:30f36a9c70450c7878053fa1344aca0145fd47d845270b43a7ee9192a051bf39"}, + {file = "PyNaCl-1.3.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:05c26f93964373fc0abe332676cb6735f0ecad27711035b9472751faa8521255"}, + {file = "PyNaCl-1.3.0-cp27-cp27m-win32.whl", hash = "sha256:a14e499c0f5955dcc3991f785f3f8e2130ed504fa3a7f44009ff458ad6bdd17f"}, + {file = "PyNaCl-1.3.0-cp27-cp27m-win_amd64.whl", hash = "sha256:f67814c38162f4deb31f68d590771a29d5ae3b1bd64b75cf232308e5c74777e0"}, + {file = "PyNaCl-1.3.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e2da3c13307eac601f3de04887624939aca8ee3c9488a0bb0eca4fb9401fc6b1"}, + {file = "PyNaCl-1.3.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0d0a8171a68edf51add1e73d2159c4bc19fc0718e79dec51166e940856c2f28e"}, + {file = "PyNaCl-1.3.0-cp34-abi3-macosx_10_6_intel.whl", hash = "sha256:4943decfc5b905748f0756fdd99d4f9498d7064815c4cf3643820c9028b711d1"}, + {file = "PyNaCl-1.3.0-cp34-abi3-manylinux1_i686.whl", hash = "sha256:5bd61e9b44c543016ce1f6aef48606280e45f892a928ca7068fba30021e9b786"}, + {file = "PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl", hash = "sha256:aabb0c5232910a20eec8563503c153a8e78bbf5459490c49ab31f6adf3f3a415"}, + {file = "PyNaCl-1.3.0-cp34-cp34m-win32.whl", hash = "sha256:7d3ce02c0784b7cbcc771a2da6ea51f87e8716004512493a2b69016326301c3b"}, + {file = "PyNaCl-1.3.0-cp34-cp34m-win_amd64.whl", hash = "sha256:1c780712b206317a746ace34c209b8c29dbfd841dfbc02aa27f2084dd3db77ae"}, + {file = "PyNaCl-1.3.0-cp35-cp35m-win32.whl", hash = "sha256:37aa336a317209f1bb099ad177fef0da45be36a2aa664507c5d72015f956c310"}, + {file = "PyNaCl-1.3.0-cp35-cp35m-win_amd64.whl", hash = "sha256:57ef38a65056e7800859e5ba9e6091053cd06e1038983016effaffe0efcd594a"}, + {file = "PyNaCl-1.3.0-cp36-cp36m-win32.whl", hash = "sha256:a39f54ccbcd2757d1d63b0ec00a00980c0b382c62865b61a505163943624ab20"}, + {file = "PyNaCl-1.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6482d3017a0c0327a49dddc8bd1074cc730d45db2ccb09c3bac1f8f32d1eb61b"}, + {file = "PyNaCl-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:2d23c04e8d709444220557ae48ed01f3f1086439f12dbf11976e849a4926db56"}, + {file = "PyNaCl-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bd4ecb473a96ad0f90c20acba4f0bf0df91a4e03a1f4dd6a4bdc9ca75aa3a715"}, + {file = "PyNaCl-1.3.0-cp38-cp38-win32.whl", hash = "sha256:53126cd91356342dcae7e209f840212a58dcf1177ad52c1d938d428eebc9fee5"}, + {file = "PyNaCl-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:bf459128feb543cfca16a95f8da31e2e65e4c5257d2f3dfa8c0c1031139c9c92"}, + {file = "PyNaCl-1.3.0.tar.gz", hash = "sha256:0c6100edd16fefd1557da078c7a31e7b7d7a52ce39fdca2bec29d4f7b6e7600c"}, +] +pyreadline = [ + {file = "pyreadline-2.1.win-amd64.exe", hash = "sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"}, + {file = "pyreadline-2.1.win32.exe", hash = "sha256:65540c21bfe14405a3a77e4c085ecfce88724743a4ead47c66b84defcf82c32e"}, + {file = "pyreadline-2.1.zip", hash = "sha256:4530592fc2e85b25b1a9f79664433da09237c1a270e4d78ea5aa3a2c7229e2d1"}, +] python-dateutil = [ {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, ] +python-telegram-bot = [ + {file = "python-telegram-bot-12.2.0.tar.gz", hash = "sha256:346d42771c2b23384c59f5f41e05bd7e801a0ce118d8dcb95209bb73d5f694c5"}, + {file = "python_telegram_bot-12.2.0-py2.py3-none-any.whl", hash = "sha256:3beee89cba3bc3217566c96199f04776dd25f541ac8992da27fd247b2d208a14"}, +] pytz = [ {file = "pytz-2019.3-py2.py3-none-any.whl", hash = "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d"}, {file = "pytz-2019.3.tar.gz", hash = "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"}, ] -pywin32-ctypes = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, -] regex = [ {file = "regex-2019.11.1-cp27-none-win32.whl", hash = "sha256:604dc563a02a74d70ae1f55208ddc9bfb6d9f470f6d1a5054c4bd5ae58744ab1"}, {file = "regex-2019.11.1-cp27-none-win_amd64.whl", hash = "sha256:5e00f65cc507d13ab4dfa92c1232d004fa202c1d43a32a13940ab8a5afe2fb96"}, @@ -294,18 +778,84 @@ regex = [ {file = "regex-2019.11.1-cp38-none-win_amd64.whl", hash = "sha256:c7393597191fc2043c744db021643549061e12abe0b3ff5c429d806de7b93b66"}, {file = "regex-2019.11.1.tar.gz", hash = "sha256:720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69"}, ] -royalnet = [ - {file = "royalnet-5.1a1.tar.gz", hash = "sha256:25664a477ed94abeae919a503e37cdf546dc4ed63e6709d3868aeb87fd7dfe43"}, -] -secretstorage = [ - {file = "SecretStorage-3.1.1-py3-none-any.whl", hash = "sha256:7a119fb52a88e398dbb22a4b3eb39b779bfbace7e4153b7bc6e5954d86282a8a"}, - {file = "SecretStorage-3.1.1.tar.gz", hash = "sha256:20c797ae48a4419f66f8d28fc221623f11fc45b6828f96bdb1ad9990acb59f92"}, +royalnet = [] +sentry-sdk = [ + {file = "sentry-sdk-0.13.4.tar.gz", hash = "sha256:bfc486af718c268cf49ff43d6334ed4db7333ace420240b630acdd8f8a3a8f60"}, + {file = "sentry_sdk-0.13.4-py2.py3-none-any.whl", hash = "sha256:a7c2c8d3f53b6b57454830cd6a4b73d272f1ba91952f59e6545b3cf885f3c22f"}, ] six = [ {file = "six-1.13.0-py2.py3-none-any.whl", hash = "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd"}, {file = "six-1.13.0.tar.gz", hash = "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"}, ] +sqlalchemy = [ + {file = "SQLAlchemy-1.3.11.tar.gz", hash = "sha256:afa5541e9dea8ad0014251bc9d56171ca3d8b130c9627c6cb3681cff30be3f8a"}, +] +starlette = [ + {file = "starlette-0.12.13.tar.gz", hash = "sha256:9597bc28e3c4659107c1c4a45ec32dc45e947d78fe56230222be673b2c36454a"}, +] +toml = [ + {file = "toml-0.10.0-py2.7.egg", hash = "sha256:f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"}, + {file = "toml-0.10.0-py2.py3-none-any.whl", hash = "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"}, + {file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"}, +] +tornado = [ + {file = "tornado-6.0.3-cp35-cp35m-win32.whl", hash = "sha256:c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5"}, + {file = "tornado-6.0.3-cp35-cp35m-win_amd64.whl", hash = "sha256:398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60"}, + {file = "tornado-6.0.3-cp36-cp36m-win32.whl", hash = "sha256:4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281"}, + {file = "tornado-6.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c"}, + {file = "tornado-6.0.3-cp37-cp37m-win32.whl", hash = "sha256:559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5"}, + {file = "tornado-6.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7"}, + {file = "tornado-6.0.3.tar.gz", hash = "sha256:c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9"}, +] tzlocal = [ {file = "tzlocal-2.0.0-py2.py3-none-any.whl", hash = "sha256:11c9f16e0a633b4b60e1eede97d8a46340d042e67b670b290ca526576e039048"}, {file = "tzlocal-2.0.0.tar.gz", hash = "sha256:949b9dd5ba4be17190a80c0268167d7e6c92c62b30026cf9764caf3e308e5590"}, ] +urllib3 = [ + {file = "urllib3-1.25.7-py2.py3-none-any.whl", hash = "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293"}, + {file = "urllib3-1.25.7.tar.gz", hash = "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"}, +] +uvicorn = [ + {file = "uvicorn-0.10.8.tar.gz", hash = "sha256:f4c34642618449f55e2bab8c6b22ff7615b520d2e7e23275be2ca894254327a3"}, +] +uvloop = [ + {file = "uvloop-0.14.0-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd"}, + {file = "uvloop-0.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:4544dcf77d74f3a84f03dd6278174575c44c67d7165d4c42c71db3fdc3860726"}, + {file = "uvloop-0.14.0-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:b4f591aa4b3fa7f32fb51e2ee9fea1b495eb75b0b3c8d0ca52514ad675ae63f7"}, + {file = "uvloop-0.14.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f07909cd9fc08c52d294b1570bba92186181ca01fe3dc9ffba68955273dd7362"}, + {file = "uvloop-0.14.0-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:afd5513c0ae414ec71d24f6f123614a80f3d27ca655a4fcf6cabe50994cc1891"}, + {file = "uvloop-0.14.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:e7514d7a48c063226b7d06617cbb12a14278d4323a065a8d46a7962686ce2e95"}, + {file = "uvloop-0.14.0-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:bcac356d62edd330080aed082e78d4b580ff260a677508718f88016333e2c9c5"}, + {file = "uvloop-0.14.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:4315d2ec3ca393dd5bc0b0089d23101276778c304d42faff5dc4579cb6caef09"}, + {file = "uvloop-0.14.0.tar.gz", hash = "sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e"}, +] +websockets = [ + {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, + {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"}, + {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"}, + {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"}, + {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"}, + {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"}, + {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"}, + {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"}, + {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"}, + {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"}, + {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"}, +] +yarl = [ + {file = "yarl-1.3.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3e2724eb9af5dc41648e5bb304fcf4891adc33258c6e14e2a7414ea32541e320"}, + {file = "yarl-1.3.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:3890ab952d508523ef4881457c4099056546593fa05e93da84c7250516e632eb"}, + {file = "yarl-1.3.0-cp35-cp35m-win32.whl", hash = "sha256:7ab825726f2940c16d92aaec7d204cfc34ac26c0040da727cf8ba87255a33829"}, + {file = "yarl-1.3.0-cp35-cp35m-win_amd64.whl", hash = "sha256:b25de84a8c20540531526dfbb0e2d2b648c13fd5dd126728c496d7c3fea33310"}, + {file = "yarl-1.3.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:2f3010703295fbe1aec51023740871e64bb9664c789cba5a6bdf404e93f7568f"}, + {file = "yarl-1.3.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5badb97dd0abf26623a9982cd448ff12cb39b8e4c94032ccdedf22ce01a64842"}, + {file = "yarl-1.3.0-cp36-cp36m-win32.whl", hash = "sha256:c9bb7c249c4432cd47e75af3864bc02d26c9594f49c82e2a28624417f0ae63b8"}, + {file = "yarl-1.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c6e341f5a6562af74ba55205dbd56d248daf1b5748ec48a0200ba227bb9e33f4"}, + {file = "yarl-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:e060906c0c585565c718d1c3841747b61c5439af2211e185f6739a9412dfbde1"}, + {file = "yarl-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:73f447d11b530d860ca1e6b582f947688286ad16ca42256413083d13f260b7a0"}, + {file = "yarl-1.3.0.tar.gz", hash = "sha256:024ecdc12bc02b321bc66b41327f930d1c2c543fa9a561b39861da9388ba7aa9"}, +] +youtube-dl = [ + {file = "youtube_dl-2019.11.22-py2.py3-none-any.whl", hash = "sha256:bd785113687f201415389156664b9ebd81698fb6eb44c6d9fd35898619e27bf7"}, + {file = "youtube_dl-2019.11.22.tar.gz", hash = "sha256:0575efd332cb9817f5a1fffd2a1e569e5a7d3642e7c24c7a5c47cbf70f301f25"}, +] diff --git a/pyproject.toml b/pyproject.toml index c03d0cb6..7ac483ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,20 @@ # Library dependencies [tool.poetry.dependencies] python = "^3.8" - royalnet = {path="../royalnet/dist/royalnet-5.1a1.tar.gz"} + + [tool.poetry.dependencies.royalnet] + git = "https://github.com/Steffo99/royalnet/" + # Maybe... there is a way to make these selectable? + extras = [ + "telegram", + "discord", + "alchemy_easy", + "bard", + "constellation", + "sentry", + "herald", + "coloredlogs" + ] # Development dependencies [tool.poetry.dev-dependencies] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index d77bcf4b..00000000 --- a/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -royalnet>=5.0a1 -starlette>=0.12.13 -aiohttp>=3.6.2 -sqlalchemy>=1.3.10 -dateparser>=0.7.2 -python_telegram_bot>=12.2.0 -wheel>=0.33.6 diff --git a/royalpack/__init__.py b/royalpack/__init__.py index aa4b1d96..7d2e9ed7 100644 --- a/royalpack/__init__.py +++ b/royalpack/__init__.py @@ -1,17 +1,19 @@ # This is a template Pack __init__. You can use this without changing anything in other packages too! -from . import commands, tables, stars, version +from . import commands, tables, stars, events from .commands import available_commands from .tables import available_tables from .stars import available_page_stars, available_exception_stars +from .events import available_events __all__ = [ "commands", "tables", "stars", - "version", + "events", "available_commands", "available_tables", "available_page_stars", "available_exception_stars", + "available_events", ] diff --git a/royalpack/commands/__init__.py b/royalpack/commands/__init__.py index 01eeda13..8d3c15e4 100644 --- a/royalpack/commands/__init__.py +++ b/royalpack/commands/__init__.py @@ -1,56 +1,56 @@ # Imports go here! from .ciaoruozi import CiaoruoziCommand from .color import ColorCommand -from .cv import CvCommand +# from .cv import CvCommand from .diario import DiarioCommand -from .rage import RageCommand -from .reminder import ReminderCommand -from .ship import ShipCommand -from .smecds import SmecdsCommand -from .videochannel import VideochannelCommand -from .trivia import TriviaCommand -from .matchmaking import MatchmakingCommand -from .pause import PauseCommand -from .play import PlayCommand -from .playmode import PlaymodeCommand -from .queue import QueueCommand -from .skip import SkipCommand -from .summon import SummonCommand -from .youtube import YoutubeCommand -from .soundcloud import SoundcloudCommand -from .zawarudo import ZawarudoCommand +# from .rage import RageCommand +# from .reminder import ReminderCommand +# from .ship import ShipCommand +# from .smecds import SmecdsCommand +# from .videochannel import VideochannelCommand +# from .trivia import TriviaCommand +# from .matchmaking import MatchmakingCommand +# from .pause import PauseCommand +# from .play import PlayCommand +# from .playmode import PlaymodeCommand +# from .queue import QueueCommand +# from .skip import SkipCommand +# from .summon import SummonCommand +# from .youtube import YoutubeCommand +# from .soundcloud import SoundcloudCommand +# from .zawarudo import ZawarudoCommand from .emojify import EmojifyCommand -from .leagueoflegends import LeagueoflegendsCommand +# from .leagueoflegends import LeagueoflegendsCommand from .diarioquote import DiarioquoteCommand -from .mp3 import Mp3Command +# from .mp3 import Mp3Command from .peertube import PeertubeCommand # Enter the commands of your Pack here! available_commands = [ CiaoruoziCommand, ColorCommand, - CvCommand, + # CvCommand, DiarioCommand, - RageCommand, - ReminderCommand, - ShipCommand, - SmecdsCommand, - VideochannelCommand, - TriviaCommand, - MatchmakingCommand, - PauseCommand, - PlayCommand, - PlaymodeCommand, - QueueCommand, - SkipCommand, - SummonCommand, - YoutubeCommand, - SoundcloudCommand, - ZawarudoCommand, + # RageCommand, + # ReminderCommand, + # ShipCommand, + # SmecdsCommand, + # VideochannelCommand, + # TriviaCommand, + # MatchmakingCommand, + # PauseCommand, + # PlayCommand, + # PlaymodeCommand, + # QueueCommand, + # SkipCommand, + # SummonCommand, + # YoutubeCommand, + # SoundcloudCommand, + # ZawarudoCommand, EmojifyCommand, - LeagueoflegendsCommand, + # LeagueoflegendsCommand, DiarioquoteCommand, - Mp3Command, + # Mp3Command, PeertubeCommand, ] diff --git a/royalpack/commands/ciaoruozi.py b/royalpack/commands/ciaoruozi.py index 7deed002..65927064 100644 --- a/royalpack/commands/ciaoruozi.py +++ b/royalpack/commands/ciaoruozi.py @@ -1,4 +1,3 @@ -import typing import telegram from royalnet.commands import * @@ -8,14 +7,11 @@ class CiaoruoziCommand(Command): description: str = "Saluta Ruozi, un leggendario essere che una volta era in User Games." - syntax: str = "" - - tables: typing.Set = set() - async def run(self, args: CommandArgs, data: CommandData) -> None: if self.interface.name == "telegram": update: telegram.Update = data.update user: telegram.User = update.effective_user + # Se sei Ruozi, salutati da solo! if user.id == 112437036: await data.reply("👋 Ciao me!") return diff --git a/royalpack/commands/diario.py b/royalpack/commands/diario.py index fecc0b09..a7e33eaf 100644 --- a/royalpack/commands/diario.py +++ b/royalpack/commands/diario.py @@ -1,14 +1,15 @@ -import typing import re import datetime import telegram import aiohttp +from typing import * from royalnet.commands import * from royalnet.utils import asyncify -from ..tables import User, Diario, Alias +from royalnet.backpack.tables import * +from ..tables import * -async def to_imgur(imgur_api_key, photosizes: typing.List[telegram.PhotoSize], caption="") -> str: +async def to_imgur(imgur_api_key, photosizes: List[telegram.PhotoSize], caption="") -> str: # Select the largest photo largest_photo = sorted(photosizes, key=lambda p: p.width * p.height)[-1] # Get the photo url @@ -35,8 +36,6 @@ class DiarioCommand(Command): syntax = "[!] \"{testo}\" --[autore], [contesto]" - tables = {User, Diario, Alias} - async def run(self, args: CommandArgs, data: CommandData) -> None: if self.interface.name == "telegram": update: telegram.Update = data.update @@ -44,15 +43,15 @@ class DiarioCommand(Command): reply: telegram.Message = message.reply_to_message creator = await data.get_author() # noinspection PyUnusedLocal - quoted: typing.Optional[str] + quoted: Optional[str] # noinspection PyUnusedLocal - text: typing.Optional[str] + text: Optional[str] # noinspection PyUnusedLocal - context: typing.Optional[str] + context: Optional[str] # noinspection PyUnusedLocal timestamp: datetime.datetime # noinspection PyUnusedLocal - media_url: typing.Optional[str] + media_url: Optional[str] # noinspection PyUnusedLocal spoiler: bool if creator is None: @@ -62,19 +61,19 @@ class DiarioCommand(Command): # Get the message text text = reply.text # Check if there's an image associated with the reply - photosizes: typing.Optional[typing.List[telegram.PhotoSize]] = reply.photo + photosizes: Optional[List[telegram.PhotoSize]] = reply.photo if photosizes: # Text is a caption text = reply.caption - media_url = await to_imgur(self.interface.bot.get_secret("imgur"), + media_url = await to_imgur(self.interface.cfg["Imgur"]["token"], photosizes, text if text is not None else "") else: media_url = None # Ensure there is a text or an image if not (text or media_url): - raise InvalidInputError("Missing text.") + raise InvalidInputError("Il messaggio a cui hai risposto non contiene testo o immagini.") # Find the Royalnet account associated with the sender - quoted_tg = await asyncify(data.session.query(self.interface.alchemy.Telegram) + quoted_tg = await asyncify(data.session.query(self.alchemy.get(Telegram)) .filter_by(tg_id=reply.from_user.id) .one_or_none) quoted_account = quoted_tg.royal if quoted_tg is not None else None @@ -92,9 +91,9 @@ class DiarioCommand(Command): # Get the message text raw_text = " ".join(args) # Check if there's an image associated with the reply - photosizes: typing.Optional[typing.List[telegram.PhotoSize]] = message.photo + photosizes: Optional[List[telegram.PhotoSize]] = message.photo if photosizes: - media_url = await to_imgur(self.interface.bot.get_secret("imgur"), + media_url = await to_imgur(self.interface.cfg["Imgur"]["token"], photosizes, raw_text if raw_text is not None else "") else: media_url = None @@ -124,8 +123,9 @@ class DiarioCommand(Command): # Find if there's a Royalnet account associated with the quoted name if quoted is not None: quoted_alias = await asyncify( - data.session.query(self.interface.alchemy.Alias) - .filter_by(alias=quoted.lower()).one_or_none) + data.session.query(self.alchemy.get(Alias)) + .filter_by(alias=quoted.lower()).one_or_none + ) else: quoted_alias = None quoted_account = quoted_alias.royal if quoted_alias is not None else None @@ -137,16 +137,16 @@ class DiarioCommand(Command): context = None # Ensure there is a text or an image if not (text or media_url): - raise InvalidInputError("Missing text.") + raise InvalidInputError("Manca il testo o l'immagine da inserire nel diario.") # Create the diario quote - diario = self.interface.alchemy.Diario(creator=creator, - quoted_account=quoted_account, - quoted=quoted, - text=text, - context=context, - timestamp=timestamp, - media_url=media_url, - spoiler=spoiler) + diario = self.alchemy.get(Diario)(creator=creator, + quoted_account=quoted_account, + quoted=quoted, + text=text, + context=context, + timestamp=timestamp, + media_url=media_url, + spoiler=spoiler) data.session.add(diario) await asyncify(data.session.commit) await data.reply(f"✅ {str(diario)}") @@ -173,7 +173,7 @@ class DiarioCommand(Command): timestamp = datetime.datetime.now() # Ensure there is some text if not text: - raise InvalidInputError("Missing text.") + raise InvalidInputError("Manca il testo o l'immagine da inserire nel diario.") # Or a quoted if not quoted: quoted = None @@ -182,25 +182,25 @@ class DiarioCommand(Command): # Find if there's a Royalnet account associated with the quoted name if quoted is not None: quoted_alias = await asyncify( - data.session.query(self.interface.alchemy.Alias) - .filter_by(alias=quoted.lower()) - .one_or_none) + data.session.query(self.alchemy.get(Alias)) + .filter_by(alias=quoted.lower()) + .one_or_none + ) else: quoted_alias = None quoted_account = quoted_alias.royal if quoted_alias is not None else None if quoted_alias is not None and quoted_account is None: - await data.reply("⚠️ Il nome dell'autore è ambiguo, quindi la riga non è stata aggiunta.\n" - "Per piacere, ripeti il comando con un nome più specifico!") - return + raise UserError("Il nome dell'autore è ambiguo, quindi la riga non è stata aggiunta.\n" + "Per piacere, ripeti il comando con un nome più specifico!") # Create the diario quote - diario = self.interface.alchemy.Diario(creator=creator, - quoted_account=quoted_account, - quoted=quoted, - text=text, - context=context, - timestamp=timestamp, - media_url=None, - spoiler=spoiler) + diario = self.alchemy.Diario(creator=creator, + quoted_account=quoted_account, + quoted=quoted, + text=text, + context=context, + timestamp=timestamp, + media_url=None, + spoiler=spoiler) data.session.add(diario) await asyncify(data.session.commit) await data.reply(f"✅ {str(diario)}") diff --git a/royalpack/commands/diarioquote.py b/royalpack/commands/diarioquote.py index adaf74f1..c9be589d 100644 --- a/royalpack/commands/diarioquote.py +++ b/royalpack/commands/diarioquote.py @@ -12,14 +12,12 @@ class DiarioquoteCommand(Command): syntax = "{id}" - tables = {Diario} - async def run(self, args: CommandArgs, data: CommandData) -> None: try: entry_id = int(args[0].lstrip("#")) except ValueError: raise CommandError("L'id che hai specificato non è valido.") - entry: Diario = await asyncify(data.session.query(self.alchemy.Diario).get, entry_id) + entry: Diario = await asyncify(data.session.query(self.alchemy.get(Diario)).get, entry_id) if entry is None: raise CommandError("Nessuna riga con quell'id trovata.") - await data.reply(str(entry)) + await data.reply(f"ℹ️ {entry}") diff --git a/royalpack/commands/peertube.py b/royalpack/commands/peertube.py index f0c60a45..10536263 100644 --- a/royalpack/commands/peertube.py +++ b/royalpack/commands/peertube.py @@ -4,7 +4,7 @@ import datetime import logging import dateparser from royalnet.commands import * -from royalnet.utils import telegram_escape +from royalnet.serf.telegram.escape import escape log = logging.getLogger(__name__) @@ -15,16 +15,10 @@ class PeertubeCommand(Command): description: str = "Guarda quando è uscito l'ultimo video su RoyalTube." - _url = r"https://pt.steffo.eu/feeds/videos.json?sort=-publishedAt&filter=local" - _ready = asyncio.Event() - _timeout = 300 - _latest_date: datetime.datetime = None - _telegram_group_id = -1001153723135 - def __init__(self, interface: CommandInterface): super().__init__(interface) if self.interface.name == "telegram": @@ -34,7 +28,7 @@ class PeertubeCommand(Command): async def _get_json(self): log.debug("Getting jsonfeed") async with aiohttp.ClientSession() as session: - async with session.get(self._url) as response: + async with session.get(self.interface.cfg["Peertube"]["feed_url"]) as response: log.debug("Parsing jsonfeed") j = await response.json() log.debug("Jsonfeed parsed successfully") @@ -43,15 +37,15 @@ class PeertubeCommand(Command): async def _send(self, message): client = self.interface.bot.client await self.interface.bot.safe_api_call(client.send_message, - chat_id=self._telegram_group_id, - text=telegram_escape(message), + chat_id=self.interface.cfg["Telegram"]["main_group_id"], + text=escape(message), parse_mode="HTML", disable_webpage_preview=True) async def _ready_up(self): j = await self._get_json() if j["version"] != "https://jsonfeed.org/version/1": - raise ConfigurationError("_url is not a jsonfeed") + raise ConfigurationError("url is not a jsonfeed") videos = j["items"] for video in reversed(videos): date_modified = dateparser.parse(video["date_modified"]) @@ -73,7 +67,7 @@ class PeertubeCommand(Command): await self._send(f"🆕 Nuovo video su RoyalTube!\n" f"[b]{video['title']}[/b]\n" f"{video['url']}") - await asyncio.sleep(self._timeout) + await asyncio.sleep(self.interface.cfg["Peertube"]["feed_update_timeout"]) async def run(self, args: CommandArgs, data: CommandData) -> None: if self.interface.name != "telegram": diff --git a/royalpack/events/__init__.py b/royalpack/events/__init__.py new file mode 100644 index 00000000..a591fe69 --- /dev/null +++ b/royalpack/events/__init__.py @@ -0,0 +1,12 @@ +# Imports go here! + + +# Enter the commands of your Pack here! +available_events = [ + +] + +# noinspection PyUnreachableCode + +# Don't change this, it should automatically generate __all__ +__all__ = [command.__name__ for command in available_events] diff --git a/royalpack/stars/api_diario_get.py b/royalpack/stars/api_diario_get.py index 5c2ddf53..ee5bf97c 100644 --- a/royalpack/stars/api_diario_get.py +++ b/royalpack/stars/api_diario_get.py @@ -1,22 +1,22 @@ from starlette.requests import Request from starlette.responses import * -from royalnet.web import * +from royalnet.constellation import * from royalnet.utils import * -from ..tables import Diario +from royalnet.backpack.tables import * +from ..tables import * class ApiDiarioGetStar(PageStar): path = "/api/diario/get/{diario_id}" - tables = {Diario} async def page(self, request: Request) -> JSONResponse: diario_id_str = request.path_params.get("diario_id", "") try: diario_id = int(diario_id_str) except (ValueError, TypeError): - return error(400, "Invalid diario_id") + return shoot(400, "Invalid diario_id") async with self.alchemy.session_acm() as session: - entry: Diario = await asyncify(session.query(self.alchemy.User).get, diario_id) - if entry is None: - return error(404, "No such user") - return JSONResponse(entry.json()) + entry: Diario = await asyncify(session.query(self.alchemy.get(Diario)).get, diario_id) + if entry is None: + return shoot(404, "No such user") + return JSONResponse(entry.json()) diff --git a/royalpack/stars/api_diario_list.py b/royalpack/stars/api_diario_list.py index 0b11af91..a4532da0 100644 --- a/royalpack/stars/api_diario_list.py +++ b/royalpack/stars/api_diario_list.py @@ -1,25 +1,35 @@ from starlette.requests import Request from starlette.responses import * -from royalnet.web import * +from royalnet.constellation import * from royalnet.utils import * -from ..tables import Diario +from royalnet.backpack.tables import * +from ..tables import * class ApiDiarioListStar(PageStar): path = "/api/diario/list" - tables = {Diario} async def page(self, request: Request) -> JSONResponse: page_str = request.query_params.get("page", "0") try: page = int(page_str) except (ValueError, TypeError): - return error(400, "Invalid offset") + return shoot(400, "Invalid offset") async with self.alchemy.session_acm() as session: if page < 0: page = -page-1 - entries: typing.List[Diario] = await asyncify(session.query(self.alchemy.Diario).order_by(self.alchemy.Diario.diario_id.desc()).limit(500).offset(page * 500).all) + entries: typing.List[Diario] = await asyncify( + session.query(self.alchemy.get(Diario)) + .order_by(self.alchemy.get(Diario).diario_id.desc()).limit(500) + .offset(page * 500) + .all + ) else: - entries: typing.List[Diario] = await asyncify(session.query(self.alchemy.Diario).order_by(self.alchemy.Diario.diario_id).limit(500).offset(page * 500).all) + entries: typing.List[Diario] = await asyncify( + session.query(self.alchemy.get(Diario)) + .order_by(self.alchemy.get(Diario).diario_id) + .limit(500) + .offset(page * 500) + .all) response = [entry.json() for entry in entries] return JSONResponse(response) diff --git a/royalpack/stars/api_user_get.py b/royalpack/stars/api_user_get.py index d547c7b6..87591b88 100644 --- a/royalpack/stars/api_user_get.py +++ b/royalpack/stars/api_user_get.py @@ -1,22 +1,22 @@ from starlette.requests import Request from starlette.responses import * -from royalnet.web import * +from royalnet.constellation import * from royalnet.utils import * -from royalnet.packs.common.tables import User +from royalnet.backpack.tables import * +from ..tables import * class ApiUserGetStar(PageStar): path = "/api/user/get/{uid_str}" - tables = {User} async def page(self, request: Request) -> JSONResponse: uid_str = request.path_params.get("uid_str", "") try: uid = int(uid_str) except (ValueError, TypeError): - return error(400, "Invalid uid") + return shoot(400, "Invalid uid") async with self.alchemy.session_acm() as session: - user: User = await asyncify(session.query(self.alchemy.User).get, uid) + user: User = await asyncify(session.query(self.alchemy.get(User)).get, uid) if user is None: - return error(404, "No such user") + return shoot(404, "No such user") return JSONResponse(user.json()) diff --git a/royalpack/stars/api_user_list.py b/royalpack/stars/api_user_list.py index 3b9a562e..91e31c0e 100644 --- a/royalpack/stars/api_user_list.py +++ b/royalpack/stars/api_user_list.py @@ -1,8 +1,9 @@ from starlette.requests import Request from starlette.responses import * -from royalnet.web import * +from royalnet.constellation import * from royalnet.utils import * -from royalnet.packs.common.tables import User +from royalnet.backpack.tables import * +from ..tables import * class ApiUserListStar(PageStar): @@ -11,5 +12,5 @@ class ApiUserListStar(PageStar): async def page(self, request: Request) -> JSONResponse: async with self.alchemy.session_acm() as session: - users: typing.List[User] = await asyncify(session.query(self.alchemy.User).all) + users: typing.List[User] = await asyncify(session.query(self.alchemy.get(User)).all) return JSONResponse([user.json() for user in users]) diff --git a/royalpack/tables/__init__.py b/royalpack/tables/__init__.py index 30ce6f79..b9b4924d 100644 --- a/royalpack/tables/__init__.py +++ b/royalpack/tables/__init__.py @@ -1,8 +1,4 @@ # Imports go here! -from royalnet.packs.common.tables import User -from royalnet.packs.common.tables import Telegram -from royalnet.packs.common.tables import Discord - from .diario import Diario from .aliases import Alias from .wikipages import WikiPage @@ -16,9 +12,6 @@ from .leagueoflegends import LeagueOfLegends # Enter the tables of your Pack here! available_tables = [ - User, - Telegram, - Discord, Diario, Alias, WikiPage, diff --git a/royalpack/tables/diario.py b/royalpack/tables/diario.py index 32769861..8422214d 100644 --- a/royalpack/tables/diario.py +++ b/royalpack/tables/diario.py @@ -83,8 +83,9 @@ class Diario: f" spoiler={self.spoiler}>" def __str__(self): - text = f"Riga #{self.diario_id}" - text += f" (salvata da {str(self.creator)}" + text = f"Riga #{self.diario_id} (salvata" + if self.creator is not None: + text += f" da {str(self.creator)}" text += f" il {self.timestamp.strftime('%Y-%m-%d %H:%M')}):\n" if self.media_url is not None: text += f"{self.media_url}\n" diff --git a/to_pypi.bat b/to_pypi.bat deleted file mode 100644 index 40941be4..00000000 --- a/to_pypi.bat +++ /dev/null @@ -1,4 +0,0 @@ - -del /f /q /s dist\*.* -python setup.py sdist bdist_wheel -twine upload dist/* diff --git a/to_pypi.sh b/to_pypi.sh deleted file mode 100755 index 84b92cc8..00000000 --- a/to_pypi.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# Royalnet must be installed with `develop` -VERSION=$(python3.7 -m royalpack.version) - -rm -rf dist -python setup.py sdist bdist_wheel -twine upload "dist/royalpack-$VERSION"* -git add * -git commit -m "$VERSION" -git push -hub release create --message "Version $VERSION" --prerelease "$VERSION"