diff --git a/bot.py b/bot.py index 3b0a779..a8e7262 100644 --- a/bot.py +++ b/bot.py @@ -1,7 +1,10 @@ +import asyncio +from aioredis.client import Redis import discord from discord.colour import Color from discord.ext import commands import sys +from signal import SIGINT, SIGTERM import json from typing import Any, Dict, List, Sequence from discord import Message @@ -11,6 +14,10 @@ from discord.ext.commands.errors import ( ExtensionNotFound, NoEntryPointError, ) +import aioredis +from aioredis import Redis + +from context import CustomContext class ChristmasBot(commands.Bot): @@ -23,6 +30,9 @@ class ChristmasBot(commands.Bot): self.initial_cog_names: List[str] = self.config.get("cogs", []) self.colors: Dict[str, Color] = self.process_colours(config.get("colors", [])) + self._redis_client: Redis = aioredis.from_url( + self.config["redis_url"], encoding="utf-8", decode_responses=True + ) self.invite_link: str = "" super().__init__( @@ -69,6 +79,9 @@ class ChristmasBot(commands.Bot): colour_dict[name] = Color(int(color, 16)) return colour_dict + async def get_context(self, message: Message, *, cls=CustomContext): + return await super().get_context(message, cls=cls) + if __name__ == "__main__": try: diff --git a/config.json.sample b/config.json.sample index 285e92c..f3ab845 100644 --- a/config.json.sample +++ b/config.json.sample @@ -2,13 +2,7 @@ "token": "", "owner_ids": [194545408960102400, 190875175460405249], "prefixes": ["ck!"], - "database": { - "host": "", - "port": 3306, - "user": "", - "password": "", - "db": "" - }, + "redis_url": "", "lavalink": { "host": "", "port": 2333, diff --git a/context.py b/context.py new file mode 100644 index 0000000..c518260 --- /dev/null +++ b/context.py @@ -0,0 +1,7 @@ +from aioredis.client import Redis +from discord.ext import commands + + +class CustomContext(commands.Context): + def get_redis(self) -> Redis: + return self.bot._redis_client diff --git a/poetry.lock b/poetry.lock index 9095636..f08b96d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -16,6 +16,21 @@ yarl = ">=1.0,<1.6.0" [package.extras] speedups = ["aiodns", "brotlipy", "cchardet"] +[[package]] +name = "aioredis" +version = "2.0.0" +description = "asyncio (PEP 3156) Redis support" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +async-timeout = "*" +typing-extensions = "*" + +[package.extras] +hiredis = ["hiredis (>=1.0)"] + [[package]] name = "async-timeout" version = "3.0.1" @@ -258,7 +273,7 @@ python-versions = ">=3.6" name = "typing-extensions" version = "3.10.0.2" description = "Backported and Experimental Type Hints for Python 3.5+" -category = "dev" +category = "main" optional = false python-versions = "*" @@ -290,7 +305,7 @@ multidict = ">=4.0" [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "9ecfdbfb13478abd79ab060516a2001a0706019f52c946f63e5ebb308e01622f" +content-hash = "3e8f3b5171be334aaa606cd70df03f9b0ac49cb2f78b69723ff49233ce9c1cd3" [metadata.files] aiohttp = [ @@ -308,6 +323,10 @@ aiohttp = [ {file = "aiohttp-3.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:687461cd974722110d1763b45c5db4d2cdee8d50f57b00c43c7590d1dd77fc5c"}, {file = "aiohttp-3.6.3.tar.gz", hash = "sha256:698cd7bc3c7d1b82bb728bae835724a486a8c376647aec336aa21a60113c3645"}, ] +aioredis = [ + {file = "aioredis-2.0.0-py3-none-any.whl", hash = "sha256:9921d68a3df5c5cdb0d5b49ad4fc88a4cfdd60c108325df4f0066e8410c55ffb"}, + {file = "aioredis-2.0.0.tar.gz", hash = "sha256:3a2de4b614e6a5f8e104238924294dc4e811aefbe17ddf52c04a93cbf06e67db"}, +] 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"}, diff --git a/pyproject.toml b/pyproject.toml index c560149..1291457 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ lavalink = "^3.1.4" humanize = "^3.12.0" "discord.py" = { git = "https://github.com/iDevision/enhanced-discord.py", branch = "2.0", extras = ["voice", "speed"] } uvloop = {version = "^0.16.0", optional = true} +aioredis = "^2.0.0" [tool.poetry.dev-dependencies] black = {version = "^21.9b0", allow-prereleases = true}