From 214e19412cbfcd43ad7591937ca251b71bb423e1 Mon Sep 17 00:00:00 2001 From: Minigrim0 Date: Wed, 30 Jun 2021 11:08:32 +0200 Subject: [PATCH 1/4] [Upd] requirements --- requirements.txt | 30 ----------- requirements/build_requirements.sh | 6 +++ requirements/requirements-dev.in | 4 ++ requirements/requirements-dev.txt | 42 +++++++++++++++ requirements/requirements.in | 7 +++ requirements/requirements.txt | 84 ++++++++++++++++++++++++++++++ setup.sh | 54 +++++++++++++++++++ 7 files changed, 197 insertions(+), 30 deletions(-) delete mode 100644 requirements.txt create mode 100755 requirements/build_requirements.sh create mode 100644 requirements/requirements-dev.in create mode 100644 requirements/requirements-dev.txt create mode 100644 requirements/requirements.in create mode 100644 requirements/requirements.txt create mode 100755 setup.sh diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 11801a4..0000000 --- a/requirements.txt +++ /dev/null @@ -1,30 +0,0 @@ -aiohttp==3.6.3 -appdirs==1.4.4 -asgiref==3.3.1 -async-timeout==3.0.1 -attrs==20.2.0 -black==20.8b1 -certifi==2020.12.5 -chardet==3.0.4 -click==7.1.2 -discord.py==1.5.1 -Django==3.1.6 -emoji==1.2.0 -flake8==3.8.4 -idna==2.10 -mccabe==0.6.1 -multidict==4.7.6 -mypy-extensions==0.4.3 -pathspec==0.8.1 -psycopg2-binary==2.8.6 -pycodestyle==2.6.0 -pyflakes==2.2.0 -pytz==2021.1 -regex==2020.11.13 -requests==2.25.1 -sqlparse==0.4.1 -toml==0.10.2 -typed-ast==1.4.2 -typing-extensions==3.7.4.3 -urllib3==1.26.4 -yarl==1.5.1 diff --git a/requirements/build_requirements.sh b/requirements/build_requirements.sh new file mode 100755 index 0000000..ddc5656 --- /dev/null +++ b/requirements/build_requirements.sh @@ -0,0 +1,6 @@ +#!/bin/bash +pip-compile requirements/requirements.in + +if [ "$1" == "dev" ]; then + pip-compile requirements/requirements-dev.in +fi diff --git a/requirements/requirements-dev.in b/requirements/requirements-dev.in new file mode 100644 index 0000000..50a0fdf --- /dev/null +++ b/requirements/requirements-dev.in @@ -0,0 +1,4 @@ +pip-tools +flake8 +black +rope diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt new file mode 100644 index 0000000..3f65e2d --- /dev/null +++ b/requirements/requirements-dev.txt @@ -0,0 +1,42 @@ +# +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile requirements/requirements-dev.in +# +appdirs==1.4.4 + # via black +black==21.6b0 + # via -r requirements/requirements-dev.in +click==8.0.1 + # via + # black + # pip-tools +flake8==3.9.2 + # via -r requirements/requirements-dev.in +mccabe==0.6.1 + # via flake8 +mypy-extensions==0.4.3 + # via black +pathspec==0.8.1 + # via black +pep517==0.10.0 + # via pip-tools +pip-tools==6.2.0 + # via -r requirements/requirements-dev.in +pycodestyle==2.7.0 + # via flake8 +pyflakes==2.3.1 + # via flake8 +regex==2021.4.4 + # via black +rope==0.19.0 + # via -r requirements/requirements-dev.in +toml==0.10.2 + # via black +wheel==0.36.2 + # via pip-tools + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/requirements/requirements.in b/requirements/requirements.in new file mode 100644 index 0000000..76bf704 --- /dev/null +++ b/requirements/requirements.in @@ -0,0 +1,7 @@ +quart +discord.py +django +emoji +psycopg2-binary +quart +requests diff --git a/requirements/requirements.txt b/requirements/requirements.txt new file mode 100644 index 0000000..ae3d26b --- /dev/null +++ b/requirements/requirements.txt @@ -0,0 +1,84 @@ +# +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile requirements/requirements.in +# +aiofiles==0.7.0 + # via quart +aiohttp==3.7.4.post0 + # via discord.py +asgiref==3.4.0 + # via django +async-timeout==3.0.1 + # via aiohttp +attrs==21.2.0 + # via aiohttp +blinker==1.4 + # via quart +certifi==2021.5.30 + # via requests +chardet==4.0.0 + # via + # aiohttp + # requests +click==8.0.1 + # via quart +discord.py==1.7.3 + # via -r requirements/requirements.in +django==3.2.4 + # via -r requirements/requirements.in +emoji==1.2.0 + # via -r requirements/requirements.in +h11==0.12.0 + # via + # hypercorn + # wsproto +h2==4.0.0 + # via hypercorn +hpack==4.0.0 + # via h2 +hypercorn==0.11.2 + # via quart +hyperframe==6.0.1 + # via h2 +idna==2.10 + # via + # requests + # yarl +itsdangerous==2.0.1 + # via quart +jinja2==3.0.1 + # via quart +markupsafe==2.0.1 + # via jinja2 +multidict==5.1.0 + # via + # aiohttp + # yarl +priority==2.0.0 + # via hypercorn +psycopg2-binary==2.9.1 + # via -r requirements/requirements.in +pytz==2021.1 + # via django +quart==0.15.1 + # via -r requirements/requirements.in +requests==2.25.1 + # via -r requirements/requirements.in +sqlparse==0.4.1 + # via django +toml==0.10.2 + # via + # hypercorn + # quart +typing-extensions==3.10.0.0 + # via aiohttp +urllib3==1.26.6 + # via requests +werkzeug==2.0.1 + # via quart +wsproto==1.0.0 + # via hypercorn +yarl==1.6.3 + # via aiohttp diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..ab45586 --- /dev/null +++ b/setup.sh @@ -0,0 +1,54 @@ +# Usage documentation +usage() { echo "Usage: $0 [-d] [-f]" 1>&2; exit 1; } + +help () { + echo "Options :" + echo " -f Force Forces the recreation of the requirements files" + echo " -d Development Builds the development requirements and install them as well" + exit +} + +while getopts "dfh" option; do + case ${option} in + f ) + FORCE="true" + ;; + d ) + DEV="true" + ;; + h ) + help + ;; + \? ) #For invalid option + usage + ;; + esac +done + +# Try venv installation +{ + python3 -m venv ve +} || { + echo "Unable to create a virtual environment, make sure python3-virtualenv is installed !" +} + +source ve/bin/activate + +# Build requirements if needed +if [ ! -e requirements/requirements.txt ] || ([ ! -e requirements/requirements-dev.txt ] && [ "$DEV" == "true" ]) || [ "$FORCE" == "true" ]; then + pip install pip-tools + + if [ "$DEV" == "true" ]; then + ./requirements/build_requirements.sh dev + else + ./requirements/build_requirements.sh + fi +fi + +# Install requirements +pip install -r requirements/requirements.txt +if [ "$DEV" == "true" ]; then + pip install -r requirements/requirements-dev.txt +fi + +./manage.py migrate From 175e8f261ac64c3c6c613d14f06e9f50e93955e6 Mon Sep 17 00:00:00 2001 From: Minigrim0 Date: Wed, 30 Jun 2021 11:08:39 +0200 Subject: [PATCH 2/4] [Upd] readme --- README.md | 53 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 37d1a1b..b2235f5 100644 --- a/README.md +++ b/README.md @@ -2,34 +2,41 @@ a Bot Excelling in Reminding Things +[![DeepSource](https://deepsource.io/gh/TeamNameBE/BERT.svg/?label=active+issues&show_trend=true&token=DdW16C2CB_tWuIDNbxXRm3Lw)](https://deepsource.io/gh/TeamNameBE/BERT/?ref=repository-badge) ## Supported Commands -* **/addreminder** date(jj/mm/yyy) hour(HH:MM) name(no space) duration(HH:MM) peopletoremind(@role) - * creates a reminder at the given date that concerns the mentionned role/user -* **/delreminder** name - * deletes a reminder -* **/modreminder** name parameter(name|start_date|duration|channel|allow_dp) new_value - * Modifies the given field of a reminder -* **/getfuture** [hours|days|weeks] value - * Returns the reminders until the given date (defaults to next week) -* **/help** [command] - * displays help message about the specified command, or about every command -* **/deathping** [@someone] - * Deathping someone (May be multiple people) -* **/stopping** [@someone] - * Stops a deathping on someone -* **/morsty** - * ? ? ? -* **/pic** keywords - * Returns a random picture corresponding to the give keywords -* **/vote** "Question" "proposition 0" ... "proposition 10" - * Creates an embed message for a quick vote +- **/addreminder** date(jj/mm/yyy) hour(HH:MM) name(no space) duration(HH:MM) peopletoremind(@role) + - creates a reminder at the given date that concerns the mentionned role/user +- **/delreminder** name + - deletes a reminder +- **/modreminder** name parameter(name|start_date|duration|channel|allow_dp) new_value + - Modifies the given field of a reminder +- **/getfuture** [hours|days|weeks] value + - Returns the reminders until the given date (defaults to next week) +- **/help** [command] + - displays help message about the specified command, or about every command +- **/deathping** [@someone] + - Deathping someone (May be multiple people) +- **/stopping** [@someone] + - Stops a deathping on someone +- **/morsty** + - ? ? ? +- **/pic** keywords + - Returns a random picture corresponding to the give keywords +- **/vote** "Question" "proposition 0" ... "proposition 10" + - Creates an embed message for a quick vote ## Installation +For development purpose : + +``` +./setup.sh -d +``` + +For deployment purpose : + ``` -virtualenv -p python3 ve/ -source ve/bin/activate -pip install -r requirements.txt +./setup.sh ``` From 87c16ed4425deef7b6a2acf8fecdf740d7b87ef7 Mon Sep 17 00:00:00 2001 From: Minigrim0 Date: Wed, 30 Jun 2021 11:25:02 +0200 Subject: [PATCH 3/4] [Add] basic web interface --- main.py | 2 ++ web/app.py | 10 ++++++++++ web/routes/__init__.py | 0 web/routes/utils.py | 7 +++++++ web/templates/index.html | 11 +++++++++++ 5 files changed, 30 insertions(+) create mode 100644 web/app.py create mode 100644 web/routes/__init__.py create mode 100644 web/routes/utils.py create mode 100644 web/templates/index.html diff --git a/main.py b/main.py index 47d2d9f..15a479b 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ import discord import os import django +from web.app import app # Django specific settings os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") @@ -28,4 +29,5 @@ async def on_message(self, message): client = MyClient() cog = ReminderCog(client) +client.loop.create_task(app.run_task('0.0.0.0')) client.run(API_KEY) diff --git a/web/app.py b/web/app.py new file mode 100644 index 0000000..2eac12f --- /dev/null +++ b/web/app.py @@ -0,0 +1,10 @@ +from web.routes.utils import app +from quart import Quart, redirect, url_for, render_template, request + + +app = Quart(__name__) + + +@app.route("/") +async def home(): + return await render_template("index.html") diff --git a/web/routes/__init__.py b/web/routes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/routes/utils.py b/web/routes/utils.py new file mode 100644 index 0000000..1b17754 --- /dev/null +++ b/web/routes/utils.py @@ -0,0 +1,7 @@ +import quart +import os +import requests + + +app = quart.Quart("") +app.secret_key = bytes(os.environ.get("session"), "utf-8") diff --git a/web/templates/index.html b/web/templates/index.html new file mode 100644 index 0000000..d2dc410 --- /dev/null +++ b/web/templates/index.html @@ -0,0 +1,11 @@ + + + + + Hello World + + + +

Hello world !

+ + From bb6bbda2e53e5c796382f06ae8c28e4263b60978 Mon Sep 17 00:00:00 2001 From: Minigrim0 Date: Sun, 4 Jul 2021 21:09:34 +0200 Subject: [PATCH 4/4] [Upd] add basic api --- web/app.py | 21 ++++++++++++++++----- web/routes/__init__.py | 0 web/routes/utils.py | 7 ------- web/templates/index.html | 11 ----------- 4 files changed, 16 insertions(+), 23 deletions(-) delete mode 100644 web/routes/__init__.py delete mode 100644 web/routes/utils.py delete mode 100644 web/templates/index.html diff --git a/web/app.py b/web/app.py index 2eac12f..e82886e 100644 --- a/web/app.py +++ b/web/app.py @@ -1,10 +1,21 @@ -from web.routes.utils import app -from quart import Quart, redirect, url_for, render_template, request +from quart import Quart + +from singleton.client import Bert app = Quart(__name__) -@app.route("/") -async def home(): - return await render_template("index.html") +@app.route("/api/servers/list") +async def server_list(): + client = Bert.getInstance() + servers = [] + + for guild in client.guilds: + servers.append({ + "name": guild.name, + "id": guild.id, + "icon": str(guild.icon_url) + }) + + return {"servers": servers} diff --git a/web/routes/__init__.py b/web/routes/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/web/routes/utils.py b/web/routes/utils.py deleted file mode 100644 index 1b17754..0000000 --- a/web/routes/utils.py +++ /dev/null @@ -1,7 +0,0 @@ -import quart -import os -import requests - - -app = quart.Quart("") -app.secret_key = bytes(os.environ.get("session"), "utf-8") diff --git a/web/templates/index.html b/web/templates/index.html deleted file mode 100644 index d2dc410..0000000 --- a/web/templates/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Hello World - - - -

Hello world !

- -