Use CacheCog where applicable
This commit is contained in:
parent
408ef87f43
commit
cfa9642fb3
4 changed files with 9 additions and 73 deletions
|
@ -14,6 +14,7 @@ from discord_slash.model import ButtonStyle
|
||||||
from jarvis.config import get_config
|
from jarvis.config import get_config
|
||||||
from jarvis.db import DBManager
|
from jarvis.db import DBManager
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
|
from jarvis.utils.cachecog import CacheCog
|
||||||
from jarvis.utils.field import Field
|
from jarvis.utils.field import Field
|
||||||
|
|
||||||
guild_ids = [578757004059738142, 520021794380447745, 862402786116763668]
|
guild_ids = [578757004059738142, 520021794380447745, 862402786116763668]
|
||||||
|
@ -25,26 +26,13 @@ invites = re.compile(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class CTCCog(commands.Cog):
|
class CTCCog(CacheCog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
super().__init__(bot)
|
||||||
mconf = get_config().mongo
|
mconf = get_config().mongo
|
||||||
self.db = DBManager(mconf).mongo
|
self.db = DBManager(mconf).mongo
|
||||||
self._session = aiohttp.ClientSession()
|
self._session = aiohttp.ClientSession()
|
||||||
self.url = "https://completethecodetwo.cards/pw"
|
self.url = "https://completethecodetwo.cards/pw"
|
||||||
self.cache = {}
|
|
||||||
self._expire_interaction.start()
|
|
||||||
|
|
||||||
def check_cache(self, ctx: SlashContext, **kwargs):
|
|
||||||
if not kwargs:
|
|
||||||
kwargs = {}
|
|
||||||
return find(
|
|
||||||
lambda x: x["command"] == ctx.subcommand_name
|
|
||||||
and x["user"] == ctx.author.id
|
|
||||||
and x["guild"] == ctx.guild.id
|
|
||||||
and all(x[k] == v for k, v in kwargs.items()),
|
|
||||||
self.cache.values(),
|
|
||||||
)
|
|
||||||
|
|
||||||
@cog_ext.cog_subcommand(
|
@cog_ext.cog_subcommand(
|
||||||
base="ctc2",
|
base="ctc2",
|
||||||
|
@ -178,15 +166,6 @@ class CTCCog(commands.Cog):
|
||||||
|
|
||||||
await paginator.start()
|
await paginator.start()
|
||||||
|
|
||||||
@loop(minutes=1)
|
|
||||||
async def _expire_interaction(self):
|
|
||||||
keys = list(self.cache.keys())
|
|
||||||
for key in keys:
|
|
||||||
if self.cache[key]["timeout"] <= datetime.utcnow() + timedelta(
|
|
||||||
minutes=1
|
|
||||||
):
|
|
||||||
del self.cache[key]
|
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(CTCCog(bot))
|
bot.add_cog(CTCCog(bot))
|
||||||
|
|
|
@ -11,32 +11,21 @@ from discord_slash.utils.manage_commands import create_choice, create_option
|
||||||
|
|
||||||
from jarvis.config import get_config
|
from jarvis.config import get_config
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
|
from jarvis.utils.cachecog import CacheCog
|
||||||
from jarvis.utils.field import Field
|
from jarvis.utils.field import Field
|
||||||
|
|
||||||
guild_ids = [862402786116763668]
|
guild_ids = [862402786116763668]
|
||||||
|
|
||||||
|
|
||||||
class GitlabCog(commands.Cog):
|
class GitlabCog(CacheCog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
super().__init__(bot)
|
||||||
config = get_config()
|
config = get_config()
|
||||||
self._gitlab = gitlab.Gitlab(
|
self._gitlab = gitlab.Gitlab(
|
||||||
"https://git.zevaryx.com", private_token=config.gitlab_token
|
"https://git.zevaryx.com", private_token=config.gitlab_token
|
||||||
)
|
)
|
||||||
# J.A.R.V.I.S. GitLab ID is 29
|
# J.A.R.V.I.S. GitLab ID is 29
|
||||||
self.project = self._gitlab.projects.get(29)
|
self.project = self._gitlab.projects.get(29)
|
||||||
self.cache = {}
|
|
||||||
self._expire_interaction.start()
|
|
||||||
|
|
||||||
def check_cache(self, ctx: SlashContext, **kwargs):
|
|
||||||
if not kwargs:
|
|
||||||
kwargs = {}
|
|
||||||
return find(
|
|
||||||
lambda x: x["command"] == ctx.subcommand_name
|
|
||||||
and x["user"] == ctx.author.id
|
|
||||||
and all(x[k] == v for k, v in kwargs.items()),
|
|
||||||
self.cache.values(),
|
|
||||||
)
|
|
||||||
|
|
||||||
@cog_ext.cog_subcommand(
|
@cog_ext.cog_subcommand(
|
||||||
base="gl",
|
base="gl",
|
||||||
|
@ -546,15 +535,6 @@ class GitlabCog(commands.Cog):
|
||||||
|
|
||||||
await paginator.start()
|
await paginator.start()
|
||||||
|
|
||||||
@loop(minutes=1)
|
|
||||||
async def _expire_interaction(self):
|
|
||||||
keys = list(self.cache.keys())
|
|
||||||
for key in keys:
|
|
||||||
if self.cache[key]["timeout"] <= datetime.utcnow() + timedelta(
|
|
||||||
minutes=1
|
|
||||||
):
|
|
||||||
del self.cache[key]
|
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
if get_config().gitlab_token:
|
if get_config().gitlab_token:
|
||||||
|
|
|
@ -4,12 +4,10 @@ from datetime import datetime, timedelta
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from bson import ObjectId
|
from bson import ObjectId
|
||||||
from ButtonPaginator import Paginator
|
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from discord.ext.tasks import loop
|
from discord.ext.tasks import loop
|
||||||
from discord.utils import find
|
from discord.utils import find
|
||||||
from discord_slash import SlashContext, cog_ext
|
from discord_slash import SlashContext, cog_ext
|
||||||
from discord_slash.model import ButtonStyle
|
|
||||||
from discord_slash.utils.manage_commands import create_option
|
from discord_slash.utils.manage_commands import create_option
|
||||||
from discord_slash.utils.manage_components import (
|
from discord_slash.utils.manage_components import (
|
||||||
create_actionrow,
|
create_actionrow,
|
||||||
|
@ -20,6 +18,7 @@ from discord_slash.utils.manage_components import (
|
||||||
|
|
||||||
from jarvis.db.types import Reminder
|
from jarvis.db.types import Reminder
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
|
from jarvis.utils.cachecog import CacheCog
|
||||||
from jarvis.utils.field import Field
|
from jarvis.utils.field import Field
|
||||||
|
|
||||||
valid = re.compile(r"[\w\s\-\\/.!@#$%^*()+=<>,\u0080-\U000E0FFF]*")
|
valid = re.compile(r"[\w\s\-\\/.!@#$%^*()+=<>,\u0080-\U000E0FFF]*")
|
||||||
|
@ -29,23 +28,11 @@ invites = re.compile(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RemindmeCog(commands.Cog):
|
class RemindmeCog(CacheCog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
super().__init__(bot)
|
||||||
self.cache = {}
|
|
||||||
self._remind.start()
|
self._remind.start()
|
||||||
|
|
||||||
def check_cache(self, ctx: SlashContext, **kwargs):
|
|
||||||
if not kwargs:
|
|
||||||
kwargs = {}
|
|
||||||
return find(
|
|
||||||
lambda x: x["command"] == ctx.subcommand_name
|
|
||||||
and x["user"] == ctx.author.id
|
|
||||||
and x["guild"] == ctx.guild.id
|
|
||||||
and all(x[k] == v for k, v in kwargs.items()),
|
|
||||||
self.cache.values(),
|
|
||||||
)
|
|
||||||
|
|
||||||
@cog_ext.cog_slash(
|
@cog_ext.cog_slash(
|
||||||
name="remindme",
|
name="remindme",
|
||||||
description="Set a reminder",
|
description="Set a reminder",
|
||||||
|
@ -318,15 +305,6 @@ class RemindmeCog(commands.Cog):
|
||||||
component["disabled"] = True
|
component["disabled"] = True
|
||||||
await message.edit(components=components)
|
await message.edit(components=components)
|
||||||
|
|
||||||
@loop(minutes=1)
|
|
||||||
async def _expire_interaction(self):
|
|
||||||
keys = list(self.cache.keys())
|
|
||||||
for key in keys:
|
|
||||||
if self.cache[key]["timeout"] <= datetime.utcnow() + timedelta(
|
|
||||||
minutes=1
|
|
||||||
):
|
|
||||||
del self.cache[key]
|
|
||||||
|
|
||||||
@loop(seconds=15)
|
@loop(seconds=15)
|
||||||
async def _remind(self):
|
async def _remind(self):
|
||||||
reminders = Reminder.get_active(
|
reminders = Reminder.get_active(
|
||||||
|
|
|
@ -10,7 +10,6 @@ from jarvis.utils.permissions import admin_or_permissions
|
||||||
class SettingsCog(commands.Cog):
|
class SettingsCog(commands.Cog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.cache = {}
|
|
||||||
|
|
||||||
def update_settings(self, setting, value, guild):
|
def update_settings(self, setting, value, guild):
|
||||||
setting = Setting(setting=setting, value=value, guild=guild)
|
setting = Setting(setting=setting, value=value, guild=guild)
|
||||||
|
|
Loading…
Add table
Reference in a new issue