Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/bots/discord/slash_parser.py

42 lines
2 KiB
Python
Raw Normal View History

2022-08-17 05:34:26 +00:00
from typing import Union
2022-08-16 18:53:43 +00:00
import discord
from bots.discord.slash_message import MessageSession
from core.elements import MsgInfo, Session
from core.logger import Logger
from core.parser.message import parser
2022-08-17 05:34:26 +00:00
def ctx_to_session(ctx: Union[discord.ApplicationContext, discord.AutocompleteContext]):
target = "Discord|Channel"
if isinstance(ctx, discord.ApplicationContext):
if isinstance(ctx.channel, discord.DMChannel):
target = "Discord|DM|Channel"
targetId = f"{target}|{ctx.channel.id}"
2022-08-17 11:42:31 +00:00
senderId = f"Discord|Client|{ctx.author.id}"
2022-08-17 05:34:26 +00:00
else:
if isinstance(ctx.interaction.channel, discord.PartialMessage):
target = "Discord|DM|Channel"
targetId = f"{target}|{ctx.interaction.channel.id}"
else:
targetId = f"{target}|{ctx.interaction.channel_id}"
senderId = f"Discord|Client|{ctx.interaction.user.id}"
return MessageSession(target=MsgInfo(targetId=targetId,
senderId=senderId,
senderName=ctx.author.name if isinstance(ctx, discord.ApplicationContext) else ctx.interaction.user.name,
targetFrom=target, senderFrom="Discord|Client",
clientName='Discord|Slash',
messageId=0),
session=Session(message=ctx,
target=ctx.channel if isinstance(ctx, discord.ApplicationContext) else ctx.interaction.channel,
sender=ctx.author if isinstance(ctx, discord.ApplicationContext) else ctx.interaction.user))
2022-08-16 18:53:43 +00:00
async def slash_parser(ctx: discord.ApplicationContext, command: str):
await ctx.defer()
2022-08-17 05:34:26 +00:00
session = ctx_to_session(ctx)
2022-08-16 19:06:59 +00:00
session.command = f'/{str(ctx.command).split(" ")[0]} {command}'
2022-08-16 18:53:43 +00:00
Logger.info(f'parsing..')
2022-08-17 11:42:31 +00:00
await parser(session, prefix=['~', '/'], require_enable_modules=False)