fix(twitch): Fix relative imports

This commit is contained in:
2026-05-31 06:32:31 +10:00
parent 733f3e3ae6
commit 0d4f9b9a9a
3 changed files with 46 additions and 46 deletions
+11 -12
View File
@@ -1,11 +1,13 @@
import twitchio
from customcmd.client import ExecClient
from customcmd.data import CustomCmd, CustomCmdData
from meta import Bot
from ..customcmd.client import ExecClient
from ..customcmd.data import CustomCmd, CustomCmdData
from .context import CustomContext, CustomCmdUser
class TwitchCmdClient(ExecClient):
def __init__(self, bot: Bot, data: CustomCmdData):
super().__init__()
@@ -22,12 +24,12 @@ class TwitchCmdClient(ExecClient):
if message.reply:
# Strip the hidden mention prefix from the start of the message
prefix = message.reply.parent_user.mention
content = content[len(prefix) + 1:]
content = content[len(prefix) + 1 :]
# If we start with a valid prefix, parse out a command name
if prefix := next((p for p in prefixes if content.startswith(p)), None):
# Strip the valid prefix
content = content[len(prefix):].strip()
content = content[len(prefix) :].strip()
if not content:
# Exit early, no command
return
@@ -53,20 +55,17 @@ class TwitchCmdClient(ExecClient):
used_prefix=prefix,
message=message,
initial_globals={
'author': CustomCmdUser(message.chatter),
'channel': CustomCmdUser(message.broadcaster),
}
"author": CustomCmdUser(message.chatter),
"channel": CustomCmdUser(message.broadcaster),
},
)
result = await self.run_command(ctx, cmd.response)
if result:
await message.broadcaster.send_message(
result,
sender=self.bot.user
)
await message.broadcaster.send_message(result, sender=self.bot.user)
async def get_prefixes(self, message: twitchio.ChatMessage):
# TODO:
return ('!',)
return ("!",)
async def get_commands_in(self, communityid: int) -> dict[str, CustomCmd]:
"""
+7 -7
View File
@@ -4,7 +4,6 @@ import twitchio
from twitchio import PartialUser
from twitchio.ext import commands as cmds
from customcmd.parser.context import ExecContext
from meta import Bot
from twitch.client import TwitchCmdClient
from utils.lib import utc_now
@@ -12,13 +11,12 @@ from utils.lib import utc_now
from . import logger
from ..customcmd.data import CustomCmd, CustomCmdData
from ..customcmd.client import ExecClient
from ..customcmd.parser import ExecContext
# TODO: Make an alphacroc or croccyalpha client for testing
# TODO: Fix the tracker not actually guarding the commands properly
class CustomCmdComponent(cmds.Component):
def __init__(self, bot: Bot):
self.bot = bot
@@ -46,7 +44,7 @@ class CustomCmdComponent(cmds.Component):
# TODO: Probably attempt to list commands or something here.
pass
@cmd_grp.command(name="add", aliases=('create', 'new'))
@cmd_grp.command(name="add", aliases=("create", "new"))
@cmds.is_broadcaster() # TODO: Better command creation perm checks
async def cmd_add(self, ctx: cmds.Context, name: str, *, response: str):
comm = await self.bot.profiles.fetch_community(ctx.broadcaster)
@@ -60,11 +58,13 @@ class CustomCmdComponent(cmds.Component):
# Make sure the command parses (can't guarantee it runs, but at least it can parse)
try:
await self.cmdclient.run_command(ExecContext(args=[], content=''), response)
await self.cmdclient.run_command(ExecContext(args=[], content=""), response)
except Exception:
# TODO: Nicer errors for pinpointing problem
await ctx.reply(f"Sorry, could not parse your command!")
logger.info(f"Failed to parse attempted customcmd '{response}'", exc_info=True)
logger.info(
f"Failed to parse attempted customcmd '{response}'", exc_info=True
)
# If everything is good, add it to the table
# TODO: Again, permission resolution
@@ -79,7 +79,7 @@ class CustomCmdComponent(cmds.Component):
await ctx.reply(f"Created a new command !{name}")
@cmd_grp.command(name="del", aliases=('delete', 'remove', 'rm'))
@cmd_grp.command(name="del", aliases=("delete", "remove", "rm"))
@cmds.is_broadcaster()
async def cmd_del(self, ctx: cmds.Context, name: str):
# Lookup the name to make sure a command does exist
+9 -8
View File
@@ -1,11 +1,11 @@
import twitchio
from customcmd.client import ExecClient
from customcmd.data import CustomCmd, CustomCmdData
from meta import Bot
from utils.lib import utc_now, strfdur
from ..customcmd.parser import ExecContext
from ..customcmd.client import ExecClient
from ..customcmd.data import CustomCmd, CustomCmdData
from .ctxvars import stuff
@@ -25,10 +25,7 @@ class CustomCmdUser:
return self.user.display_name or self.user.name or self.user.id
async def _exec_attr_whisper(self, ctx, message: str):
await self.user.send_whisper(
to_user=self.user,
message=message
)
await self.user.send_whisper(to_user=self.user, message=message)
async def _exec_attr_followage(self, ctx, channel: twitchio.PartialUser):
followed_at = None
@@ -38,7 +35,9 @@ class CustomCmdUser:
if followed_at:
durstr = strfdur(utc_now() - followed_at)
resp = f"{self.user.mention} has been following {channel.mention} for {durstr}"
resp = (
f"{self.user.mention} has been following {channel.mention} for {durstr}"
)
else:
return f"{self.user.mention} is not following {channel.mention}"
@@ -51,13 +50,15 @@ class CustomContext(ExecContext):
"""
CustomCommand ExecContext instantiated from a Twitch message
"""
def __init__(
self,
bot: Bot,
message: twitchio.ChatMessage,
alias: str,
used_prefix: str,
**kwargs):
**kwargs,
):
super().__init__(**kwargs)
self.bot = bot
self.message = message