From d4724fd19669430822517bf9e5fd08876ba1e600 Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Wed, 1 Feb 2023 08:23:41 -0700 Subject: [PATCH] Migrate to interaction v5 --- .flake8 | 1 + jarvis/__init__.py | 2 +- jarvis/client/__init__.py | 15 ++--- jarvis/client/errors.py | 17 +++--- jarvis/client/events/__init__.py | 29 ++++----- jarvis/client/events/components.py | 8 +-- jarvis/client/events/member.py | 20 +++--- jarvis/client/events/message.py | 18 +++--- jarvis/client/tasks.py | 4 +- jarvis/cogs/core/__init__.py | 2 +- jarvis/cogs/core/admin/__init__.py | 2 +- jarvis/cogs/core/admin/autoreact.py | 14 ++--- jarvis/cogs/core/admin/ban.py | 18 +++--- jarvis/cogs/core/admin/filters.py | 18 ++++-- jarvis/cogs/core/admin/kick.py | 10 +-- jarvis/cogs/core/admin/lock.py | 16 ++--- jarvis/cogs/core/admin/lockdown.py | 20 +++--- jarvis/cogs/core/admin/modcase.py | 18 +++--- jarvis/cogs/core/admin/mute.py | 14 ++--- jarvis/cogs/core/admin/purge.py | 12 ++-- jarvis/cogs/core/admin/roleping.py | 20 +++--- jarvis/cogs/core/admin/settings.py | 20 +++--- jarvis/cogs/core/admin/temprole.py | 18 +++--- jarvis/cogs/core/admin/verify.py | 10 +-- jarvis/cogs/core/admin/warning.py | 18 +++--- jarvis/cogs/core/botutil.py | 12 ++-- jarvis/cogs/core/remindme.py | 18 +++--- jarvis/cogs/core/socials/__init__.py | 2 +- jarvis/cogs/core/socials/reddit.py | 32 +++++----- jarvis/cogs/core/socials/twitter.py | 24 +++++--- jarvis/cogs/core/util.py | 29 +++++---- jarvis/cogs/extra/__init__.py | 2 +- jarvis/cogs/extra/calc.py | 10 +-- jarvis/cogs/extra/dev.py | 24 ++++---- jarvis/cogs/extra/image.py | 16 ++--- jarvis/cogs/extra/pinboard.py | 26 ++++---- jarvis/cogs/extra/rolegiver.py | 28 ++++----- jarvis/cogs/extra/tags.py | 16 ++--- jarvis/cogs/unique/__init__.py | 2 +- jarvis/cogs/unique/ctc2.py | 20 +++--- jarvis/cogs/unique/dbrand.py | 12 ++-- jarvis/cogs/unique/gl.py | 12 ++-- jarvis/embeds/admin.py | 10 ++- jarvis/utils/__init__.py | 6 +- jarvis/utils/cogs.py | 32 +++------- jarvis/utils/permissions.py | 2 +- jarvis/utils/updates.py | 18 +++--- poetry.lock | 91 ++++++++++++++++++++++++++-- pyproject.toml | 2 +- 49 files changed, 431 insertions(+), 359 deletions(-) diff --git a/.flake8 b/.flake8 index 36c40f6..3ce22df 100644 --- a/.flake8 +++ b/.flake8 @@ -13,4 +13,5 @@ extend-ignore = # Plugins we don't currently include: flake8-return R502, # do not implicitly return None in function able to return non-None value. R503, # missing explicit return at the end of function ableto return non-None value. + R505, B023, # Temporary max-line-length=100 diff --git a/jarvis/__init__.py b/jarvis/__init__.py index 5172272..7ffcdad 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -4,9 +4,9 @@ from functools import partial from typing import Any import jurigged +from interactions import Intents from jarvis_core.db import connect from jarvis_core.log import get_logger -from naff import Intents from redis import asyncio as aioredis from jarvis import const diff --git a/jarvis/client/__init__.py b/jarvis/client/__init__.py index d7dac77..c46ed93 100644 --- a/jarvis/client/__init__.py +++ b/jarvis/client/__init__.py @@ -2,24 +2,25 @@ import logging from typing import TYPE_CHECKING +from interactions import Client +from interactions.ext.prefixed_commands.context import PrefixedContext +from interactions.models.internal.context import BaseContext, InteractionContext from jarvis_core.util.ansi import Fore, Format, fmt -from naff.models.naff.context import Context, InteractionContext, PrefixedContext -from nafftrack.client import StatsClient from jarvis.client.errors import ErrorMixin from jarvis.client.events import EventMixin from jarvis.client.tasks import TaskMixin if TYPE_CHECKING: - from aioredis import Redis + from redis import asyncio as aioredis KEY_FMT = fmt(Fore.GRAY) VAL_FMT = fmt(Fore.WHITE) CMD_FMT = fmt(Fore.GREEN, Format.BOLD) -class Jarvis(StatsClient, ErrorMixin, EventMixin, TaskMixin): - def __init__(self, redis: "Redis", *args, **kwargs): # noqa: ANN002 ANN003 +class Jarvis(Client, ErrorMixin, EventMixin, TaskMixin): + def __init__(self, redis: "aioredis.Redis", *args, **kwargs): # noqa: ANN002 ANN003 super().__init__(*args, **kwargs) self.redis = redis self.logger = logging.getLogger(__name__) @@ -27,10 +28,10 @@ class Jarvis(StatsClient, ErrorMixin, EventMixin, TaskMixin): self.pre_run_callback = self._prerun self.synced = False - async def _prerun(self, ctx: Context, *args, **kwargs) -> None: + async def _prerun(self, ctx: BaseContext, *args, **kwargs) -> None: name = ctx.invoke_target cargs = "" - if isinstance(ctx, InteractionContext) and ctx.target_id: + if isinstance(ctx, InteractionContext) and hasattr(ctx, "target_id"): kwargs["context target"] = ctx.target cargs = " ".join(f"{k}:{v}" for k, v in kwargs.items()) elif isinstance(ctx, PrefixedContext): diff --git a/jarvis/client/errors.py b/jarvis/client/errors.py index 64a390c..37f97e0 100644 --- a/jarvis/client/errors.py +++ b/jarvis/client/errors.py @@ -2,8 +2,13 @@ import traceback from datetime import datetime, timezone -from naff.client.errors import CommandCheckFailure, CommandOnCooldown, HTTPException -from naff.models.naff.context import Context, InteractionContext, PrefixedContext +from interactions.client.errors import ( + CommandCheckFailure, + CommandOnCooldown, + HTTPException, +) +from interactions.ext.prefixed_commands.context import PrefixedContext +from interactions.models.internal.context import BaseContext, InteractionContext from pastypy import AsyncPaste as Paste DEFAULT_GUILD = 862402786116763668 @@ -35,9 +40,7 @@ class ErrorMixin: else: self.logger.error(f"Ignoring exception in {source}", exc_info=error) - async def on_command_error( - self, ctx: Context, error: Exception, *args: list, **kwargs: dict - ) -> None: + async def on_command_error(self, ctx: BaseContext, error: Exception, *args: list, **kwargs: dict) -> None: """NAFF on_command_error override.""" name = ctx.invoke_target self.logger.debug(f"Handling error in {name}: {error}") @@ -67,9 +70,7 @@ class ErrorMixin: v = v[97] + "..." arg_str += f" - {v}" callback_args = "\n".join(f" - {i}" for i in args) if args else " None" - callback_kwargs = ( - "\n".join(f" {k}: {v}" for k, v in kwargs.items()) if kwargs else " None" - ) + callback_kwargs = "\n".join(f" {k}: {v}" for k, v in kwargs.items()) if kwargs else " None" full_message = ERROR_MSG.format( guild_name=ctx.guild.name, error_time=error_time, diff --git a/jarvis/client/events/__init__.py b/jarvis/client/events/__init__.py index 430419b..7548a46 100644 --- a/jarvis/client/events/__init__.py +++ b/jarvis/client/events/__init__.py @@ -2,14 +2,15 @@ import asyncio from aiohttp import ClientSession +from interactions import listen +from interactions.ext.prefixed_commands.context import PrefixedContext +from interactions.models.discord.channel import DMChannel +from interactions.models.discord.embed import EmbedField +from interactions.models.internal.application_commands import ContextMenu +from interactions.models.internal.context import BaseContext, InteractionContext from jarvis_core.db import q from jarvis_core.db.models import Reminder, Setting from jarvis_core.util.ansi import RESET, Fore, Format, fmt -from naff import listen -from naff.models.discord.channel import DMChannel -from naff.models.discord.embed import EmbedField -from naff.models.naff.application_commands import ContextMenu -from naff.models.naff.context import Context, InteractionContext, PrefixedContext from jarvis import const from jarvis.client.events.components import ComponentEventMixin @@ -71,9 +72,7 @@ class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): if not isinstance(self.interaction_tree[cid][_], ContextMenu) ) global_context_menus = sum( - 1 - for _ in self.interaction_tree[cid] - if isinstance(self.interaction_tree[cid][_], ContextMenu) + 1 for _ in self.interaction_tree[cid] if isinstance(self.interaction_tree[cid][_], ContextMenu) ) else: guild_base_commands += sum( @@ -82,9 +81,7 @@ class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): if not isinstance(self.interaction_tree[cid][_], ContextMenu) ) guild_context_menus += sum( - 1 - for _ in self.interaction_tree[cid] - if isinstance(self.interaction_tree[cid][_], ContextMenu) + 1 for _ in self.interaction_tree[cid] if isinstance(self.interaction_tree[cid][_], ContextMenu) ) self.logger.info("Loaded {:>3} global base slash commands".format(global_base_commands)) self.logger.info("Loaded {:>3} global context menus".format(global_context_menus)) @@ -97,7 +94,7 @@ class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): _ = await Reminder.find().to_list(None) # Modlog - async def on_command(self, ctx: Context) -> None: + async def on_command(self, ctx: BaseContext) -> None: """NAFF on_command override.""" name = ctx.invoke_target if not isinstance(ctx.channel, DMChannel) and name not in ["pw"]: @@ -135,13 +132,9 @@ class EventMixin(MemberEventMixin, MessageEventMixin, ComponentEventMixin): color="#fc9e3f", ) embed.set_author(name=ctx.author.username, icon_url=ctx.author.display_avatar.url) - embed.set_footer( - text=f"{ctx.author.user.username}#{ctx.author.discriminator} | {ctx.author.id}" - ) + embed.set_footer(text=f"{ctx.author.user.username}#{ctx.author.discriminator} | {ctx.author.id}") if channel: await channel.send(embeds=embed) else: - self.logger.warning( - f"Activitylog channel no longer exists in {ctx.guild.name}, removing" - ) + self.logger.warning(f"Activitylog channel no longer exists in {ctx.guild.name}, removing") await modlog.delete() diff --git a/jarvis/client/events/components.py b/jarvis/client/events/components.py index 8b7fbb1..4f68a3e 100644 --- a/jarvis/client/events/components.py +++ b/jarvis/client/events/components.py @@ -1,10 +1,10 @@ """JARVIS component event mixin.""" +from interactions import listen +from interactions.api.events.internal import ButtonPressed +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import Permissions from jarvis_core.db import q from jarvis_core.db.models import Action, Modlog, Note, Phishlist, Reminder, Star -from naff import listen -from naff.api.events.internal import ButtonPressed -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import Permissions from jarvis.utils import build_embed diff --git a/jarvis/client/events/member.py b/jarvis/client/events/member.py index 8c9ead4..8762077 100644 --- a/jarvis/client/events/member.py +++ b/jarvis/client/events/member.py @@ -1,14 +1,14 @@ """JARVIS member event mixin.""" import asyncio +from interactions import listen +from interactions.api.events.discord import MemberAdd, MemberRemove, MemberUpdate +from interactions.client.utils.misc_utils import get +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.enums import AuditLogEventType +from interactions.models.discord.user import Member from jarvis_core.db import q from jarvis_core.db.models import Setting -from naff import listen -from naff.api.events.discord import MemberAdd, MemberRemove, MemberUpdate -from naff.client.utils.misc_utils import get -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.enums import AuditLogEventType -from naff.models.discord.user import Member from jarvis.utils import build_embed @@ -116,9 +116,7 @@ class MemberEventMixin: name="Before", value=f"{before.display_name} ({before.username}#{before.discriminator})", ), - EmbedField( - name="After", value=f"{after.display_name} ({after.username}#{after.discriminator})" - ), + EmbedField(name="After", value=f"{after.display_name} ({after.username}#{after.discriminator})"), ) embed = build_embed( title="User Renamed", @@ -136,9 +134,7 @@ class MemberEventMixin: before = event.before after = event.after - if (before.display_name == after.display_name and before.roles == after.roles) or ( - not after or not before - ): + if (before.display_name == after.display_name and before.roles == after.roles) or (not after or not before): return log = await Setting.find_one(q(guild=before.guild.id, setting="activitylog")) diff --git a/jarvis/client/events/message.py b/jarvis/client/events/message.py index 88e460b..72ef468 100644 --- a/jarvis/client/events/message.py +++ b/jarvis/client/events/message.py @@ -3,6 +3,15 @@ import re from datetime import datetime, timedelta, timezone from aiohttp import ClientSession +from interactions import listen +from interactions.api.events.discord import MessageCreate, MessageDelete, MessageUpdate +from interactions.client.utils.misc_utils import find_all +from interactions.models.discord.channel import DMChannel, GuildText +from interactions.models.discord.components import ActionRow, Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles, Permissions +from interactions.models.discord.message import Message +from interactions.models.discord.user import Member from jarvis_core.db import q from jarvis_core.db.models import ( Autopurge, @@ -15,15 +24,6 @@ from jarvis_core.db.models import ( Warning, ) from jarvis_core.filters import invites, url -from naff import listen -from naff.api.events.discord import MessageCreate, MessageDelete, MessageUpdate -from naff.client.utils.misc_utils import find_all -from naff.models.discord.channel import DMChannel, GuildText -from naff.models.discord.components import ActionRow, Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles, Permissions -from naff.models.discord.message import Message -from naff.models.discord.user import Member from jarvis.branding import get_command_color from jarvis.embeds.admin import warning_embed diff --git a/jarvis/client/tasks.py b/jarvis/client/tasks.py index 672c6f8..bc1f5cd 100644 --- a/jarvis/client/tasks.py +++ b/jarvis/client/tasks.py @@ -1,7 +1,7 @@ """JARVIS task mixin.""" from aiohttp import ClientSession -from naff.models.naff.tasks.task import Task -from naff.models.naff.tasks.triggers import IntervalTrigger +from interactions.models.internal.tasks.task import Task +from interactions.models.internal.tasks.triggers import IntervalTrigger class TaskMixin: diff --git a/jarvis/cogs/core/__init__.py b/jarvis/cogs/core/__init__.py index 629742a..ff3488b 100644 --- a/jarvis/cogs/core/__init__.py +++ b/jarvis/cogs/core/__init__.py @@ -1,5 +1,5 @@ """JARVIS Core Cogs.""" -from naff import Client +from interactions import Client from jarvis.cogs.core import admin, botutil, remindme, socials, util diff --git a/jarvis/cogs/core/admin/__init__.py b/jarvis/cogs/core/admin/__init__.py index 6eeac0f..b945b28 100644 --- a/jarvis/cogs/core/admin/__init__.py +++ b/jarvis/cogs/core/admin/__init__.py @@ -1,7 +1,7 @@ """JARVIS Admin Cogs.""" import logging -from naff import Client +from interactions import Client from jarvis.cogs.core.admin import ( autoreact, diff --git a/jarvis/cogs/core/admin/autoreact.py b/jarvis/cogs/core/admin/autoreact.py index 27a23af..fe903a0 100644 --- a/jarvis/cogs/core/admin/autoreact.py +++ b/jarvis/cogs/core/admin/autoreact.py @@ -3,17 +3,17 @@ import logging import re from typing import Optional, Tuple -from jarvis_core.db import q -from jarvis_core.db.models import Autoreact -from naff import Client, Extension, InteractionContext, Permissions -from naff.client.utils.misc_utils import find -from naff.models.discord.channel import GuildText -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.client.utils.misc_utils import find +from interactions.models.discord.channel import GuildText +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Autoreact from jarvis.data.unicode import emoji_list from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/ban.py b/jarvis/cogs/core/admin/ban.py index 34358d2..2b6ed0f 100644 --- a/jarvis/cogs/core/admin/ban.py +++ b/jarvis/cogs/core/admin/ban.py @@ -2,21 +2,21 @@ import re from datetime import timedelta -from jarvis_core.db import q -from jarvis_core.db.models import Ban, Unban -from naff import InteractionContext, Permissions -from naff.client.utils.misc_utils import find, find_all -from naff.ext.paginators import Paginator -from naff.models.discord.embed import EmbedField -from naff.models.discord.user import User -from naff.models.naff.application_commands import ( +from interactions import InteractionContext, Permissions +from interactions.client.utils.misc_utils import find, find_all +from interactions.ext.paginators import Paginator +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.user import User +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, SlashCommandChoice, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Ban, Unban from jarvis.branding import get_command_color from jarvis.embeds.admin import ban_embed, unban_embed diff --git a/jarvis/cogs/core/admin/filters.py b/jarvis/cogs/core/admin/filters.py index b288971..59ff2f8 100644 --- a/jarvis/cogs/core/admin/filters.py +++ b/jarvis/cogs/core/admin/filters.py @@ -4,16 +4,22 @@ import difflib import re from typing import Dict, List -from jarvis_core.db import q -from jarvis_core.db.models import Filter -from naff import AutocompleteContext, Client, Extension, InteractionContext, Permissions -from naff.models.discord.modal import InputText, Modal, TextStyles -from naff.models.naff.application_commands import ( +from interactions import ( + AutocompleteContext, + Client, + Extension, + InteractionContext, + Permissions, +) +from interactions.models.discord.modal import InputText, Modal, TextStyles +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Filter from thefuzz import process from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/kick.py b/jarvis/cogs/core/admin/kick.py index bb9537a..d68c9c4 100644 --- a/jarvis/cogs/core/admin/kick.py +++ b/jarvis/cogs/core/admin/kick.py @@ -1,13 +1,13 @@ """JARVIS KickCog.""" -from jarvis_core.db.models import Kick -from naff import InteractionContext, Permissions -from naff.models.discord.user import User -from naff.models.naff.application_commands import ( +from interactions import InteractionContext, Permissions +from interactions.models.discord.user import User +from interactions.models.internal.application_commands import ( OptionTypes, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db.models import Kick from jarvis.embeds.admin import kick_embed from jarvis.utils.cogs import ModcaseCog diff --git a/jarvis/cogs/core/admin/lock.py b/jarvis/cogs/core/admin/lock.py index faad57e..2857b20 100644 --- a/jarvis/cogs/core/admin/lock.py +++ b/jarvis/cogs/core/admin/lock.py @@ -2,18 +2,18 @@ import logging from typing import Union -from jarvis_core.db import q -from jarvis_core.db.models import Lock, Permission -from naff import Client, Extension, InteractionContext -from naff.client.utils.misc_utils import get -from naff.models.discord.channel import GuildText, GuildVoice -from naff.models.discord.enums import Permissions -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.client.utils.misc_utils import get +from interactions.models.discord.channel import GuildText, GuildVoice +from interactions.models.discord.enums import Permissions +from interactions.models.internal.application_commands import ( OptionTypes, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Lock, Permission from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/lockdown.py b/jarvis/cogs/core/admin/lockdown.py index 2498cbe..8d20c8e 100644 --- a/jarvis/cogs/core/admin/lockdown.py +++ b/jarvis/cogs/core/admin/lockdown.py @@ -1,20 +1,20 @@ """JARVIS LockdownCog.""" import logging -from jarvis_core.db import q -from jarvis_core.db.models import Lock, Lockdown, Permission -from naff import Client, Extension, InteractionContext -from naff.client.utils.misc_utils import find_all, get -from naff.models.discord.channel import GuildCategory, GuildChannel -from naff.models.discord.enums import Permissions -from naff.models.discord.guild import Guild -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.client.utils.misc_utils import find_all, get +from interactions.models.discord.channel import GuildCategory, GuildChannel +from interactions.models.discord.enums import Permissions +from interactions.models.discord.guild import Guild +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Lock, Lockdown, Permission from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/modcase.py b/jarvis/cogs/core/admin/modcase.py index 2d28baf..44eea03 100644 --- a/jarvis/cogs/core/admin/modcase.py +++ b/jarvis/cogs/core/admin/modcase.py @@ -1,18 +1,18 @@ """JARVIS Moderation Case management.""" from typing import TYPE_CHECKING, List, Optional -from jarvis_core.db import q -from jarvis_core.db.models import Modlog, Note, actions -from naff import Extension, InteractionContext, Permissions -from naff.ext.paginators import Paginator -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import Extension, InteractionContext, Permissions +from interactions.ext.paginators import Paginator +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Modlog, Note, actions from rich.console import Console from rich.table import Table @@ -20,7 +20,7 @@ from jarvis.utils import build_embed from jarvis.utils.permissions import admin_or_permissions if TYPE_CHECKING: - from naff.models.discord.guild import Guild + from interactions.models.discord.guild import Guild ACTIONS_LOOKUP = { "ban": actions.Ban, diff --git a/jarvis/cogs/core/admin/mute.py b/jarvis/cogs/core/admin/mute.py index 44b3487..902df30 100644 --- a/jarvis/cogs/core/admin/mute.py +++ b/jarvis/cogs/core/admin/mute.py @@ -4,12 +4,11 @@ from datetime import datetime, timedelta, timezone from dateparser import parse from dateparser_data.settings import default_parsers -from jarvis_core.db.models import Mute -from naff import InteractionContext, Permissions -from naff.client.errors import Forbidden -from naff.models.discord.modal import InputText, Modal, TextStyles -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import InteractionContext, Permissions +from interactions.client.errors import Forbidden +from interactions.models.discord.modal import InputText, Modal, TextStyles +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( CommandTypes, OptionTypes, SlashCommandChoice, @@ -17,7 +16,8 @@ from naff.models.naff.application_commands import ( slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db.models import Mute from jarvis.embeds.admin import mute_embed, unmute_embed from jarvis.utils.cogs import ModcaseCog diff --git a/jarvis/cogs/core/admin/purge.py b/jarvis/cogs/core/admin/purge.py index 524db70..2fe3bd9 100644 --- a/jarvis/cogs/core/admin/purge.py +++ b/jarvis/cogs/core/admin/purge.py @@ -1,16 +1,16 @@ """JARVIS PurgeCog.""" import logging -from jarvis_core.db import q -from jarvis_core.db.models import Autopurge, Purge -from naff import Client, Extension, InteractionContext, Permissions -from naff.models.discord.channel import GuildText -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.models.discord.channel import GuildText +from interactions.models.internal.application_commands import ( OptionTypes, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Autopurge, Purge from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/roleping.py b/jarvis/cogs/core/admin/roleping.py index 0f76ae0..5490c62 100644 --- a/jarvis/cogs/core/admin/roleping.py +++ b/jarvis/cogs/core/admin/roleping.py @@ -1,20 +1,20 @@ """JARVIS RolepingCog.""" import logging -from jarvis_core.db import q -from jarvis_core.db.models import Roleping -from naff import Client, Extension, InteractionContext, Permissions -from naff.client.utils.misc_utils import find_all -from naff.ext.paginators import Paginator -from naff.models.discord.embed import EmbedField -from naff.models.discord.role import Role -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.client.utils.misc_utils import find_all +from interactions.ext.paginators import Paginator +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.role import Role +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Roleping from jarvis.utils import build_embed from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/settings.py b/jarvis/cogs/core/admin/settings.py index a4b3593..6e1d9de 100644 --- a/jarvis/cogs/core/admin/settings.py +++ b/jarvis/cogs/core/admin/settings.py @@ -3,20 +3,20 @@ import asyncio import logging from typing import Any -from jarvis_core.db import q -from jarvis_core.db.models import Setting -from naff import AutocompleteContext, Client, Extension, InteractionContext -from naff.models.discord.channel import GuildText -from naff.models.discord.components import ActionRow, Button, ButtonStyles -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import Permissions -from naff.models.discord.role import Role -from naff.models.naff.application_commands import ( +from interactions import AutocompleteContext, Client, Extension, InteractionContext +from interactions.models.discord.channel import GuildText +from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import Permissions +from interactions.models.discord.role import Role +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Setting from thefuzz import process from jarvis.utils import build_embed diff --git a/jarvis/cogs/core/admin/temprole.py b/jarvis/cogs/core/admin/temprole.py index ff04ff8..3a977f2 100644 --- a/jarvis/cogs/core/admin/temprole.py +++ b/jarvis/cogs/core/admin/temprole.py @@ -4,19 +4,19 @@ from datetime import datetime, timezone from dateparser import parse from dateparser_data.settings import default_parsers -from jarvis_core.db.models import Temprole -from naff import Client, Extension, InteractionContext, Permissions -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.role import Role -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.role import Role +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db.models import Temprole from jarvis.utils import build_embed from jarvis.utils.permissions import admin_or_permissions diff --git a/jarvis/cogs/core/admin/verify.py b/jarvis/cogs/core/admin/verify.py index 99eaff7..f7f99bf 100644 --- a/jarvis/cogs/core/admin/verify.py +++ b/jarvis/cogs/core/admin/verify.py @@ -3,13 +3,13 @@ import asyncio import logging from random import randint +from interactions import Client, Extension, InteractionContext +from interactions.models.discord.components import Button, ButtonStyles, spread_to_rows +from interactions.models.internal.application_commands import slash_command +from interactions.models.internal.command import cooldown +from interactions.models.internal.cooldowns import Buckets from jarvis_core.db import q from jarvis_core.db.models import Setting -from naff import Client, Extension, InteractionContext -from naff.models.discord.components import Button, ButtonStyles, spread_to_rows -from naff.models.naff.application_commands import slash_command -from naff.models.naff.command import cooldown -from naff.models.naff.cooldowns import Buckets def create_layout() -> list: diff --git a/jarvis/cogs/core/admin/warning.py b/jarvis/cogs/core/admin/warning.py index 8659c0a..910fa36 100644 --- a/jarvis/cogs/core/admin/warning.py +++ b/jarvis/cogs/core/admin/warning.py @@ -1,19 +1,19 @@ """JARVIS WarningCog.""" from datetime import datetime, timedelta, timezone -from jarvis_core.db import q -from jarvis_core.db.models import Warning -from naff import InteractionContext, Permissions -from naff.client.utils.misc_utils import get_all -from naff.ext.paginators import Paginator -from naff.models.discord.embed import EmbedField -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import InteractionContext, Permissions +from interactions.client.utils.misc_utils import get_all +from interactions.ext.paginators import Paginator +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, slash_command, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Warning from jarvis.embeds.admin import warning_embed from jarvis.utils import build_embed diff --git a/jarvis/cogs/core/botutil.py b/jarvis/cogs/core/botutil.py index 0eaefa4..3dca3fd 100644 --- a/jarvis/cogs/core/botutil.py +++ b/jarvis/cogs/core/botutil.py @@ -6,11 +6,13 @@ from io import BytesIO import psutil from aiofile import AIOFile, LineReader -from naff import Client, Extension, PrefixedContext, prefixed_command -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.file import File +from interactions import Client, Extension +from interactions.ext.prefixed_commands.command import prefixed_command +from interactions.ext.prefixed_commands.context import PrefixedContext +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.file import File from rich.console import Console from jarvis.utils import build_embed diff --git a/jarvis/cogs/core/remindme.py b/jarvis/cogs/core/remindme.py index 2b47a79..e41c3f5 100644 --- a/jarvis/cogs/core/remindme.py +++ b/jarvis/cogs/core/remindme.py @@ -7,19 +7,19 @@ from typing import List from dateparser import parse from dateparser_data.settings import default_parsers -from jarvis_core.db import q -from jarvis_core.db.models import Reminder -from naff import AutocompleteContext, Client, Extension, InteractionContext -from naff.models.discord.channel import GuildChannel -from naff.models.discord.components import ActionRow, Button -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.modal import InputText, Modal, TextStyles -from naff.models.naff.application_commands import ( +from interactions import AutocompleteContext, Client, Extension, InteractionContext +from interactions.models.discord.channel import GuildChannel +from interactions.models.discord.components import ActionRow, Button +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.modal import InputText, Modal, TextStyles +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) +from jarvis_core.db import q +from jarvis_core.db.models import Reminder from thefuzz import process from jarvis.utils import build_embed diff --git a/jarvis/cogs/core/socials/__init__.py b/jarvis/cogs/core/socials/__init__.py index 61802a1..66df519 100644 --- a/jarvis/cogs/core/socials/__init__.py +++ b/jarvis/cogs/core/socials/__init__.py @@ -1,6 +1,6 @@ """JARVIS Social Cogs.""" -from naff import Client +from interactions import Client from jarvis.cogs.core.socials import reddit, twitter diff --git a/jarvis/cogs/core/socials/reddit.py b/jarvis/cogs/core/socials/reddit.py index 9864b82..8f112d6 100644 --- a/jarvis/cogs/core/socials/reddit.py +++ b/jarvis/cogs/core/socials/reddit.py @@ -8,6 +8,22 @@ from asyncpraw import Reddit from asyncpraw.models.reddit.submission import Submission from asyncpraw.models.reddit.submission import Subreddit as Sub from asyncprawcore.exceptions import Forbidden, NotFound, Redirect +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.client.utils.misc_utils import get +from interactions.models.discord.channel import ChannelTypes, GuildText +from interactions.models.discord.components import ( + ActionRow, + StringSelectMenu, + StringSelectOption, +) +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.internal.application_commands import ( + OptionTypes, + SlashCommand, + SlashCommandChoice, + slash_option, +) +from interactions.models.internal.command import check from jarvis_core.db import q from jarvis_core.db.models import ( Redditor, @@ -16,18 +32,6 @@ from jarvis_core.db.models import ( SubredditFollow, UserSetting, ) -from naff import Client, Extension, InteractionContext, Permissions -from naff.client.utils.misc_utils import get -from naff.models.discord.channel import ChannelTypes, GuildText -from naff.models.discord.components import ActionRow, SelectOption, StringSelectMenu -from naff.models.discord.embed import Embed, EmbedField -from naff.models.naff.application_commands import ( - OptionTypes, - SlashCommand, - SlashCommandChoice, - slash_option, -) -from naff.models.naff.command import check from jarvis import const from jarvis.config import JarvisConfig @@ -208,7 +212,7 @@ class RedditCog(Extension): for idx, redditor in enumerate(redditors): sub = await Redditor.find_one(q(name=redditor.name)) names.append(sub.name) - option = SelectOption(label=sub.name, value=str(idx)) + option = StringSelectOption(label=sub.name, value=str(idx)) options.append(option) select = StringSelectMenu(options=options, custom_id="to_delete", min_values=1, max_values=len(redditors)) @@ -327,7 +331,7 @@ class RedditCog(Extension): for idx, subreddit in enumerate(subreddits): sub = await Subreddit.find_one(q(display_name=subreddit.display_name)) names.append(sub.display_name) - option = SelectOption(label=sub.display_name, value=str(idx)) + option = StringSelectOption(label=sub.display_name, value=str(idx)) options.append(option) select = StringSelectMenu(options=options, custom_id="to_delete", min_values=1, max_values=len(subreddits)) diff --git a/jarvis/cogs/core/socials/twitter.py b/jarvis/cogs/core/socials/twitter.py index 1c3e7df..f902efd 100644 --- a/jarvis/cogs/core/socials/twitter.py +++ b/jarvis/cogs/core/socials/twitter.py @@ -3,18 +3,22 @@ import asyncio import logging import tweepy -from jarvis_core.db import q -from jarvis_core.db.models import TwitterAccount, TwitterFollow -from naff import Client, Extension, InteractionContext, Permissions -from naff.client.utils.misc_utils import get -from naff.models.discord.channel import GuildText -from naff.models.discord.components import ActionRow, SelectOption, StringSelectMenu -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.client.utils.misc_utils import get +from interactions.models.discord.channel import GuildText +from interactions.models.discord.components import ( + ActionRow, + StringSelectMenu, + StringSelectOption, +) +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import TwitterAccount, TwitterFollow from jarvis.config import JarvisConfig from jarvis.utils.permissions import admin_or_permissions @@ -121,7 +125,7 @@ class TwitterCog(Extension): for twitter in twitters: account = await TwitterAccount.find_one(q(twitter_id=twitter.twitter_id)) handlemap[str(twitter.twitter_id)] = account.handle - option = SelectOption(label=account.handle, value=str(twitter.twitter_id)) + option = StringSelectOption(label=account.handle, value=str(twitter.twitter_id)) options.append(option) select = StringSelectMenu(options=options, custom_id="to_delete", min_values=1, max_values=len(twitters)) @@ -185,7 +189,7 @@ class TwitterCog(Extension): for twitter in twitters: account = await TwitterAccount.find_one(q(twitter_id=twitter.id)) handlemap[str(twitter.twitter_id)] = account.handle - option = SelectOption(label=account.handle, value=str(twitter.twitter_id)) + option = StringSelectOption(label=account.handle, value=str(twitter.twitter_id)) options.append(option) select = StringSelectMenu(options=options, custom_id="to_update", min_values=1, max_values=len(twitters)) diff --git a/jarvis/cogs/core/util.py b/jarvis/cogs/core/util.py index d9bfded..9bb6171 100644 --- a/jarvis/cogs/core/util.py +++ b/jarvis/cogs/core/util.py @@ -9,16 +9,17 @@ from io import BytesIO import numpy as np from dateparser import parse -from naff import Client, Extension, InteractionContext, const -from naff.models.discord.channel import GuildCategory, GuildText, GuildVoice -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.file import File -from naff.models.discord.guild import Guild -from naff.models.discord.role import Role -from naff.models.discord.user import User -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions import __version__ as ipyv +from interactions.models.discord.channel import GuildCategory, GuildText, GuildVoice +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.file import File +from interactions.models.discord.guild import Guild +from interactions.models.discord.role import Role +from interactions.models.discord.user import User +from interactions.models.internal.application_commands import ( CommandTypes, OptionTypes, SlashCommand, @@ -27,8 +28,8 @@ from naff.models.naff.application_commands import ( slash_command, slash_option, ) -from naff.models.naff.command import cooldown -from naff.models.naff.cooldowns import Buckets +from interactions.models.internal.command import cooldown +from interactions.models.internal.cooldowns import Buckets from PIL import Image from tzlocal import get_localzone @@ -88,7 +89,9 @@ class UtilCog(Extension): inline=True, ) ) - fields.append(EmbedField(name="NAFF", value=f"[{const.__version__}](https://naff.info)", inline=True)) + fields.append( + EmbedField(name="interactions", value=f"[{ipyv}](https://interactionspy.readthedocs.io)", inline=True) + ) repo_url = f"https://git.zevaryx.com/stark-industries/jarvis/jarvis-bot/-/tree/{get_repo_hash()}" fields.append(EmbedField(name="Git Hash", value=f"[{get_repo_hash()[:7]}]({repo_url})", inline=True)) fields.append(EmbedField(name="Online Since", value=f"", inline=False)) diff --git a/jarvis/cogs/extra/__init__.py b/jarvis/cogs/extra/__init__.py index 9067b99..2ca49ce 100644 --- a/jarvis/cogs/extra/__init__.py +++ b/jarvis/cogs/extra/__init__.py @@ -1,5 +1,5 @@ """JARVIS extra, optional cogs""" -from naff import Client +from interactions import Client from jarvis.cogs.extra import calc, dev, image, pinboard, rolegiver, tags diff --git a/jarvis/cogs/extra/calc.py b/jarvis/cogs/extra/calc.py index c47e504..736cc58 100644 --- a/jarvis/cogs/extra/calc.py +++ b/jarvis/cogs/extra/calc.py @@ -3,11 +3,11 @@ import json from aiohttp import ClientSession from calculator import calculate -from naff import AutocompleteContext, Client, Extension, InteractionContext -from naff.models.discord.components import Button -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.naff.application_commands import ( +from interactions import AutocompleteContext, Client, Extension, InteractionContext +from interactions.models.discord.components import Button +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, SlashCommandChoice, diff --git a/jarvis/cogs/extra/dev.py b/jarvis/cogs/extra/dev.py index 3add3a6..a23cc30 100644 --- a/jarvis/cogs/extra/dev.py +++ b/jarvis/cogs/extra/dev.py @@ -12,23 +12,23 @@ import ulid as ulidpy from aiofile import AIOFile from ansitoimg.render import ansiToRender from bson import ObjectId -from jarvis_core.filters import invites, url -from jarvis_core.util import convert_bytesize, hash -from jarvis_core.util.http import get_size -from naff import Client, Extension, InteractionContext -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.file import File -from naff.models.discord.message import Attachment -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.file import File +from interactions.models.discord.message import Attachment +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, SlashCommandChoice, slash_option, ) -from naff.models.naff.command import cooldown -from naff.models.naff.cooldowns import Buckets +from interactions.models.internal.command import cooldown +from interactions.models.internal.cooldowns import Buckets +from jarvis_core.filters import invites, url +from jarvis_core.util import convert_bytesize, hash +from jarvis_core.util.http import get_size from rich.console import Console from jarvis.utils import build_embed diff --git a/jarvis/cogs/extra/image.py b/jarvis/cogs/extra/image.py index 8e34eff..1789977 100644 --- a/jarvis/cogs/extra/image.py +++ b/jarvis/cogs/extra/image.py @@ -6,18 +6,18 @@ from io import BytesIO import aiohttp import cv2 import numpy as np -from jarvis_core.util import convert_bytesize, unconvert_bytesize -from naff import Client, Extension, InteractionContext -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.file import File -from naff.models.discord.message import Attachment -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.file import File +from interactions.models.discord.message import Attachment +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) +from jarvis_core.util import convert_bytesize, unconvert_bytesize from jarvis.utils import build_embed diff --git a/jarvis/cogs/extra/pinboard.py b/jarvis/cogs/extra/pinboard.py index fff19d6..eb682ba 100644 --- a/jarvis/cogs/extra/pinboard.py +++ b/jarvis/cogs/extra/pinboard.py @@ -2,27 +2,27 @@ import asyncio import logging -from jarvis_core.db import q -from jarvis_core.db.models import Star, Starboard -from naff import Client, Extension, InteractionContext, Permissions -from naff.client import errors -from naff.models.discord.channel import GuildText -from naff.models.discord.components import ( +from interactions import Client, Extension, InteractionContext, Permissions +from interactions.client import errors +from interactions.models.discord.channel import GuildText +from interactions.models.discord.components import ( ActionRow, Button, - SelectOption, StringSelectMenu, + StringSelectOption, ) -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.message import Message -from naff.models.naff.application_commands import ( +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.message import Message +from interactions.models.internal.application_commands import ( CommandTypes, OptionTypes, SlashCommand, context_menu, slash_option, ) -from naff.models.naff.command import check +from interactions.models.internal.command import check +from jarvis_core.db import q +from jarvis_core.db.models import Star, Starboard from jarvis.utils import build_embed from jarvis.utils.permissions import admin_or_permissions @@ -167,9 +167,9 @@ class PinboardCog(Extension): select_channels = [] for idx, x in enumerate(channel_list): if x: - select_channels.append(SelectOption(label=x.name, value=str(idx))) + select_channels.append(StringSelectOption(label=x.name, value=str(idx))) - select_channels = [SelectOption(label=x.name, value=str(idx)) for idx, x in enumerate(channel_list)] + select_channels = [StringSelectOption(label=x.name, value=str(idx)) for idx, x in enumerate(channel_list)] select = StringSelectMenu( options=select_channels, diff --git a/jarvis/cogs/extra/rolegiver.py b/jarvis/cogs/extra/rolegiver.py index 6df4fe0..c9fc155 100644 --- a/jarvis/cogs/extra/rolegiver.py +++ b/jarvis/cogs/extra/rolegiver.py @@ -3,9 +3,7 @@ import asyncio import logging from typing import Dict -from jarvis_core.db import q -from jarvis_core.db.models import Rolegiver -from naff import ( +from interactions import ( AutocompleteContext, Client, Extension, @@ -13,23 +11,25 @@ from naff import ( Permissions, listen, ) -from naff.client.utils.misc_utils import get -from naff.models.discord.components import ( +from interactions.client.utils.misc_utils import get +from interactions.models.discord.components import ( ActionRow, Button, - SelectOption, StringSelectMenu, + StringSelectOption, ) -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles -from naff.models.discord.role import Role -from naff.models.naff.application_commands import ( +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles +from interactions.models.discord.role import Role +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import check, cooldown -from naff.models.naff.cooldowns import Buckets +from interactions.models.internal.command import check, cooldown +from interactions.models.internal.cooldowns import Buckets +from jarvis_core.db import q +from jarvis_core.db.models import Rolegiver from thefuzz import process from jarvis.utils import build_embed @@ -226,7 +226,7 @@ class RolegiverCog(Extension): options = [] for role in setting.roles: role: Role = await ctx.guild.fetch_role(role) - option = SelectOption(label=role.name, value=str(role.id)) + option = StringSelectOption(label=role.name, value=str(role.id)) options.append(option) select = StringSelectMenu( @@ -305,7 +305,7 @@ class RolegiverCog(Extension): valid = list(filter(lambda x: x.id in setting.roles, user_roles)) options = [] for role in valid: - option = SelectOption(label=role.name, value=str(role.id)) + option = StringSelectOption(label=role.name, value=str(role.id)) options.append(option) select = StringSelectMenu( diff --git a/jarvis/cogs/extra/tags.py b/jarvis/cogs/extra/tags.py index d6b53e8..4e9df91 100644 --- a/jarvis/cogs/extra/tags.py +++ b/jarvis/cogs/extra/tags.py @@ -4,18 +4,18 @@ import re from datetime import datetime, timezone from typing import Dict, List -from jarvis_core.db import q -from jarvis_core.db.models import Setting, Tag -from naff import AutocompleteContext, Client, Extension, InteractionContext -from naff.models.discord.components import Button -from naff.models.discord.embed import EmbedField -from naff.models.discord.enums import ButtonStyles, Permissions -from naff.models.discord.modal import InputText, Modal, TextStyles -from naff.models.naff.application_commands import ( +from interactions import AutocompleteContext, Client, Extension, InteractionContext +from interactions.models.discord.components import Button +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.enums import ButtonStyles, Permissions +from interactions.models.discord.modal import InputText, Modal, TextStyles +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) +from jarvis_core.db import q +from jarvis_core.db.models import Setting, Tag from thefuzz import process from jarvis.utils import build_embed diff --git a/jarvis/cogs/unique/__init__.py b/jarvis/cogs/unique/__init__.py index 6f53edf..11ced79 100644 --- a/jarvis/cogs/unique/__init__.py +++ b/jarvis/cogs/unique/__init__.py @@ -1,5 +1,5 @@ """JARVIS guild-specific cogs""" -from naff import Client +from interactions import Client from jarvis.cogs.unique import ctc2, dbrand, gl diff --git a/jarvis/cogs/unique/ctc2.py b/jarvis/cogs/unique/ctc2.py index e590614..922218e 100644 --- a/jarvis/cogs/unique/ctc2.py +++ b/jarvis/cogs/unique/ctc2.py @@ -3,20 +3,20 @@ import logging import re import aiohttp -from jarvis_core.db import q -from jarvis_core.db.models import Guess -from naff import Client, Extension, InteractionContext -from naff.ext.paginators import Paginator -from naff.models.discord.components import ActionRow, Button, ButtonStyles -from naff.models.discord.embed import EmbedField -from naff.models.discord.user import Member, User -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.ext.paginators import Paginator +from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.user import Member, User +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import cooldown -from naff.models.naff.cooldowns import Buckets +from interactions.models.internal.command import cooldown +from interactions.models.internal.cooldowns import Buckets +from jarvis_core.db import q +from jarvis_core.db.models import Guess from jarvis.utils import build_embed diff --git a/jarvis/cogs/unique/dbrand.py b/jarvis/cogs/unique/dbrand.py index e256305..ee4eaca 100644 --- a/jarvis/cogs/unique/dbrand.py +++ b/jarvis/cogs/unique/dbrand.py @@ -5,16 +5,16 @@ from datetime import datetime, timedelta, timezone import aiohttp from bs4 import BeautifulSoup -from naff import Client, Extension, InteractionContext -from naff.client.utils import find -from naff.models.discord.embed import EmbedField -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.client.utils import find +from interactions.models.discord.embed import EmbedField +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, slash_option, ) -from naff.models.naff.command import cooldown -from naff.models.naff.cooldowns import Buckets +from interactions.models.internal.command import cooldown +from interactions.models.internal.cooldowns import Buckets from thefuzz import process from jarvis.branding import CUSTOM_EMOJIS diff --git a/jarvis/cogs/unique/gl.py b/jarvis/cogs/unique/gl.py index f6b8fb1..6658224 100644 --- a/jarvis/cogs/unique/gl.py +++ b/jarvis/cogs/unique/gl.py @@ -4,12 +4,12 @@ import logging from datetime import datetime import gitlab -from naff import Client, Extension, InteractionContext -from naff.ext.paginators import Paginator -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.modal import InputText, Modal, TextStyles -from naff.models.discord.user import Member -from naff.models.naff.application_commands import ( +from interactions import Client, Extension, InteractionContext +from interactions.ext.paginators import Paginator +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.modal import InputText, Modal, TextStyles +from interactions.models.discord.user import Member +from interactions.models.internal.application_commands import ( OptionTypes, SlashCommand, SlashCommandChoice, diff --git a/jarvis/embeds/admin.py b/jarvis/embeds/admin.py index 2fa43a9..34e2bf0 100644 --- a/jarvis/embeds/admin.py +++ b/jarvis/embeds/admin.py @@ -1,9 +1,9 @@ """JARVIS bot-specific embeds.""" from typing import Optional -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.guild import Guild -from naff.models.discord.user import Member, User +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.guild import Guild +from interactions.models.discord.user import Member, User from jarvis.branding import get_command_color from jarvis.utils import build_embed @@ -33,9 +33,7 @@ def ban_embed( fields = [EmbedField(name="Reason", value=reason), EmbedField(name="Type", value=type)] if duration: fields.append(EmbedField(name="Duration", value=f"{duration} hours")) - fields.append( - EmbedField(name="Admin", value=f"{admin.username}#{admin.discriminator} ({admin.mention})") - ) + fields.append(EmbedField(name="Admin", value=f"{admin.username}#{admin.discriminator} ({admin.mention})")) if dm: embed = build_embed( title=f"You have been banned from {guild.name}", diff --git a/jarvis/utils/__init__.py b/jarvis/utils/__init__.py index 4f03a8b..7b1b290 100644 --- a/jarvis/utils/__init__.py +++ b/jarvis/utils/__init__.py @@ -3,9 +3,9 @@ from datetime import datetime, timezone from pkgutil import iter_modules import git -from naff.models.discord.embed import Embed, EmbedField -from naff.models.discord.guild import AuditLogEntry -from naff.models.discord.user import Member +from interactions.models.discord.embed import Embed, EmbedField +from interactions.models.discord.guild import AuditLogEntry +from interactions.models.discord.user import Member from jarvis.branding import PRIMARY_COLOR from jarvis.config import JarvisConfig diff --git a/jarvis/utils/cogs.py b/jarvis/utils/cogs.py index 1dde758..3d8b6f7 100644 --- a/jarvis/utils/cogs.py +++ b/jarvis/utils/cogs.py @@ -2,12 +2,12 @@ import logging from datetime import timedelta +from interactions import Client, Extension, InteractionContext +from interactions.models.discord.components import ActionRow, Button, ButtonStyles +from interactions.models.discord.embed import EmbedField +from interactions.models.discord.user import Member from jarvis_core.db import q from jarvis_core.db.models import Action, Ban, Kick, Modlog, Mute, Setting, Warning -from naff import Client, Extension, InteractionContext -from naff.models.discord.components import ActionRow, Button, ButtonStyles -from naff.models.discord.embed import EmbedField -from naff.models.discord.user import Member from jarvis.tracking import warnings_tracker from jarvis.utils import build_embed @@ -60,9 +60,7 @@ class ModcaseCog(Extension): self.logger.warning("Unsupported action %s, exiting", name) return - action = await coll.find_one( - q(user=user.id, guild=ctx.guild_id, active=True), sort=[("_id", -1)] - ) + action = await coll.find_one(q(user=user.id, guild=ctx.guild_id, active=True), sort=[("_id", -1)]) if not action: self.logger.warning("Missing action %s, exiting", name) return @@ -71,9 +69,7 @@ class ModcaseCog(Extension): if notify and name not in ("Kick", "Ban"): # Ignore Kick and Ban, as these are unique fields = ( EmbedField(name="Action Type", value=name, inline=False), - EmbedField( - name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False - ), + EmbedField(name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False), ) embed = build_embed( title="Admin action taken", @@ -106,9 +102,7 @@ class ModcaseCog(Extension): if channel: fields = ( EmbedField(name="Action Type", value=name, inline=False), - EmbedField( - name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False - ), + EmbedField(name="Reason", value=kwargs.get("reason", None) or "N/A", inline=False), EmbedField(name="Admin", value=ctx.author.mention, inline=False), ) embed = build_embed( @@ -116,9 +110,7 @@ class ModcaseCog(Extension): description=f"Admin action has been taken against {user.mention}", fields=fields, ) - embed.set_author( - name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url - ) + embed.set_author(name=f"{user.username}#{user.discriminator}", icon_url=user.display_avatar.url) embed.set_footer(text=f"User ID: {user.id}") if name == "Mute": mts = int(user.communication_disabled_until.timestamp()) @@ -134,9 +126,7 @@ class ModcaseCog(Extension): channel = await ctx.guild.fetch_channel(modlog.value) if not channel: - self.logger.warn( - f"Guild {ctx.guild.id} modlog channel no longer exists, deleting" - ) + self.logger.warn(f"Guild {ctx.guild.id} modlog channel no longer exists, deleting") await modlog.delete() return @@ -157,7 +147,5 @@ class ModcaseCog(Extension): ] message = await channel.send(embeds=embed, components=components) - await self.bot.redis.set( - lookup_key, f"{name.lower()}|{action.id}", ex=timedelta(days=7) - ) + await self.bot.redis.set(lookup_key, f"{name.lower()}|{action.id}", ex=timedelta(days=7)) await self.bot.redis.set(f"msg|{message.id}", user.id, ex=timedelta(days=7)) diff --git a/jarvis/utils/permissions.py b/jarvis/utils/permissions.py index cac2ff2..5184541 100644 --- a/jarvis/utils/permissions.py +++ b/jarvis/utils/permissions.py @@ -1,5 +1,5 @@ """Permissions wrappers.""" -from naff import InteractionContext, Permissions +from interactions import InteractionContext, Permissions from jarvis.config import JarvisConfig diff --git a/jarvis/utils/updates.py b/jarvis/utils/updates.py index 2c1d21b..af6c15b 100644 --- a/jarvis/utils/updates.py +++ b/jarvis/utils/updates.py @@ -9,16 +9,16 @@ from types import FunctionType, ModuleType from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional import git -from naff.client.errors import ExtensionNotFound -from naff.client.utils.misc_utils import find, find_all -from naff.models.naff.application_commands import SlashCommand -from naff.models.naff.extension import Extension +from interactions.client.errors import ExtensionNotFound +from interactions.client.utils.misc_utils import find, find_all +from interactions.models.internal.application_commands import SlashCommand +from interactions.models.internal.extension import Extension from rich.table import Table import jarvis.cogs if TYPE_CHECKING: - from naff.client.client import Client + from interactions.client.client import Client _logger = logging.getLogger(__name__) @@ -75,9 +75,7 @@ def get_git_changes(repo: git.Repo) -> dict: if commit.hexsha == current_hash: break files = commit.stats.files - file_changes.update( - {key: {"insertions": 0, "deletions": 0, "lines": 0} for key in files.keys()} - ) + file_changes.update({key: {"insertions": 0, "deletions": 0, "lines": 0} for key in files.keys()}) for file, stats in files.items(): if file not in file_changes: file_changes[file] = {"insertions": 0, "deletions": 0, "lines": 0} @@ -168,9 +166,7 @@ async def update(bot: "Client") -> Optional[UpdateResult]: reloaded.append(module) else: for command in commands: - old_command = find( - lambda x: x.resolved_name == command.resolved_name, current_commands[module] - ) + old_command = find(lambda x: x.resolved_name == command.resolved_name, current_commands[module]) # Extract useful info old_args = old_command.options diff --git a/poetry.lock b/poetry.lock index b91b63c..89e70c3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -803,6 +803,34 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker perf = ["ipython"] testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +[[package]] +name = "interactions" +version = "5.0.0" +description = "Easy, simple, scalable and modular: a Python API wrapper for interactions." +category = "main" +optional = false +python-versions = ">=3.10,<4.0" +files = [] +develop = false + +[package.dependencies] +aiohttp = "^3.8.3" +attrs = ">=22.1.0" +discord-typings = "^0.5.1" +emoji = "^2.1.0" +mypy = ">0.930" +tomli = "^2.0.1" + +[package.extras] +jurigged = ["jurigged (>=0.5.3,<0.6.0)"] +orjson = ["orjson (>=3.6.8,<4.0.0)"] + +[package.source] +type = "git" +url = "https://github.com/interactions-py/interactions.py" +reference = "5.x" +resolved_reference = "2a20657a939dfde33163042a1fe8cb3e960a4fa5" + [[package]] name = "jarvis-core" version = "0.16.1" @@ -1110,11 +1138,62 @@ files = [ {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, ] +[[package]] +name = "mypy" +version = "0.991" +description = "Optional static typing for Python" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, + {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, + {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, + {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, + {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, + {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, + {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, + {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, + {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, + {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, + {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, + {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, + {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, + {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, + {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, + {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, + {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, + {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, + {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, + {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, + {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, + {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, + {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, +] + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + [[package]] name = "mypy-extensions" version = "0.4.3" description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" +category = "main" optional = false python-versions = "*" files = [ @@ -1124,19 +1203,19 @@ files = [ [[package]] name = "naff" -version = "2.0.0" +version = "2.1.0" description = "Not another freaking fork" category = "main" optional = false python-versions = ">=3.10" files = [ - {file = "naff-2.0.0-py3-none-any.whl", hash = "sha256:afd3906acbdaf6f87ea6e618f07e97f059f9adf8011afd1e3b73fb55d03d153a"}, - {file = "naff-2.0.0.tar.gz", hash = "sha256:eb51697ddf91ba0047a3d35951ad5a4daceb97301698b0078781dee969eb3f99"}, + {file = "naff-2.1.0-py3-none-any.whl", hash = "sha256:e433683b62f1a151867a44c752cb8725e8505f99086b07765f66696fa553adf2"}, + {file = "naff-2.1.0.tar.gz", hash = "sha256:a58db2f56f6f5fc4fbefb354ce4d17a78080817ac8524ce6e74dedc54e1c850c"}, ] [package.dependencies] aiohttp = "*" -attrs = "*" +attrs = ">=22.1.0" discord-typings = ">=0.5.1" emoji = "*" tomli = "*" @@ -2690,4 +2769,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = ">=3.10,<4" -content-hash = "89f766c3bacf47f7b955a812a695020dbae9c4f301816e94c943151af2696a19" +content-hash = "4a6ff8ef1a1d34dece616ee55184914e45562fb90713c6d8ba78552799d1712e" diff --git a/pyproject.toml b/pyproject.toml index 430753f..d817616 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,6 @@ aiofile = "^3.8.1" asyncpraw = "^7.5.0" rich = "^12.3.0" jurigged = "^0.5.3" # Contributed -naff = { version = "^2.0.0", extras = ["orjson"] } # Contributed ansitoimg = "^2022.1" nest-asyncio = "^1.5.5" thefuzz = {extras = ["speedup"], git = "https://github.com/zevaryx/thefuzz.git", rev = "master"} # Forked @@ -30,6 +29,7 @@ beautifulsoup4 = "^4.11.1" calculator = {git = "https://git.zevaryx.com/zevaryx/calculator.git"} # Mine nafftrack = {git = "https://github.com/zevaryx/nafftrack.git"} # Contributed redis = "^4.4.0" +interactions = {git = "https://github.com/interactions-py/interactions.py", rev = "5.x"} [tool.poetry.dev-dependencies] black = {version = "^22.3.0", allow-prereleases = true}