Archived
1
0
Fork 0

reduce duplication of code

This commit is contained in:
yzhh 2023-08-29 23:33:17 +08:00
parent 5f8dc09547
commit 87dc9b7bf7
6 changed files with 46 additions and 94 deletions

View file

@ -15,10 +15,10 @@ from bots.aiocqhttp.client import bot, client_name
from config import Config
from core.builtins import Bot, ErrorMessage, base_superuser_list
from core.builtins import Plain, Image, Voice, Temp, command_prefix
from core.builtins.message import MessageSession as MS
from core.builtins.message import MessageSession as MS, FetchTarget as FT
from core.builtins.message.chain import MessageChain
from core.logger import Logger
from core.types import MsgInfo, Session, FetchTarget as FT, FinishedSession as FinS
from core.types import FinishedSession as FinS
from core.utils.image import msgchain2image
from database import BotDBUtil
from core.utils.storedata import get_stored_list
@ -236,22 +236,8 @@ class MessageSession(MS):
class FetchTarget(FT):
name = client_name
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[Bot.FetchedSession]:
matchTarget = re.match(r'^(QQ\|Group|QQ\|Guild|QQ)\|(.*)', targetId)
if matchTarget:
targetFrom = senderFrom = matchTarget.group(1)
targetId = matchTarget.group(2)
if senderId:
matchSender = re.match(r'^(QQ\|Tiny|QQ)\|(.*)', senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
return Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
match_target_regex = re.compile(r'^(QQ\|Group|QQ\|Guild|QQ)\|(.*)')
match_sender_regex = re.compile(r'^(QQ\|Tiny|QQ)\|(.*)')
@staticmethod
async def fetch_target_list(targetList: list) -> List[Bot.FetchedSession]:

View file

@ -1,14 +1,13 @@
import re
import traceback
from typing import List, Union
from typing import List
from bots.aiogram.client import dp, bot, token, client_name
from config import Config
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage, FetchTarget as FT
from core.builtins.message.chain import MessageChain
from core.logger import Logger
from core.types import MsgInfo, Session, FetchTarget as FT, \
FinishedSession as FinS
from core.types import FinishedSession as FinS
from core.utils.image import image_split
from database import BotDBUtil
@ -139,23 +138,8 @@ class MessageSession(MS):
class FetchTarget(FT):
name = client_name
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[Bot.FetchedSession]:
matchChannel = re.match(r'^(Telegram\|.*?)\|(.*)', targetId)
if matchChannel:
targetFrom = senderFrom = matchChannel.group(1)
targetId = matchChannel.group(2)
if senderId:
matchSender = re.match(r'^(Telegram\|User)\|(.*)', senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
return Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
match_target_regex = re.compile(r'^(Telegram\|.*?)\|(.*)')
match_sender_regex = re.compile(r'^(Telegram\|User)\|(.*)')
@staticmethod
async def fetch_target_list(targetList: list) -> List[Bot.FetchedSession]:

View file

@ -8,11 +8,11 @@ import filetype
from bots.discord.client import client, client_name
from config import Config
from core.builtins import Bot, Plain, Image, MessageSession as MS
from core.builtins import Bot, Plain, Image, MessageSession as MS, FetchTarget as FT
from core.builtins.message.chain import MessageChain
from core.builtins.message.internal import Embed, ErrorMessage, Voice
from core.logger import Logger
from core.types import MsgInfo, Session, FetchTarget as FT, FinishedSession as FinS
from core.types import FinishedSession as FinS
from core.utils.http import download_to_cache
from database import BotDBUtil
@ -175,22 +175,8 @@ Bot.FetchedSession = FetchedSession
class FetchTarget(FT):
name = client_name
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[Bot.FetchedSession]:
matchChannel = re.match(r'^(Discord\|(?:DM\||)Channel)\|(.*)', targetId)
if matchChannel:
targetFrom = senderFrom = matchChannel.group(1)
targetId = matchChannel.group(2)
if senderId:
matchSender = re.match(r'^(Discord\|Client)\|(.*)', senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
return Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
match_target_regex = re.compile(r'^(Discord\|(?:DM\||)Channel)\|(.*)')
match_sender_regex = re.compile(r'^(Discord\|Client)\|(.*)')
@staticmethod
async def fetch_target_list(targetList: list) -> List[Bot.FetchedSession]:

View file

@ -8,12 +8,10 @@ from khl import MessageTypes, Message
from bots.kook.client import bot, client_name
from config import Config
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage, FetchTarget as FT
from core.builtins.message.chain import MessageChain
from core.logger import Logger
from core.types import MsgInfo, Session, FetchTarget as FT, \
FinishedSession as FinS
from core.utils.image import image_split
from core.types import FinishedSession as FinS
from database import BotDBUtil
enable_analytics = Config('enable_analytics')
@ -199,22 +197,8 @@ Bot.FetchedSession = FetchedSession
class FetchTarget(FT):
name = client_name
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[Bot.FetchedSession]:
matchChannel = re.match(r'^(Kook\|.*?)\|(.*)', targetId)
if matchChannel:
targetFrom = senderFrom = matchChannel.group(1)
targetId = matchChannel.group(2)
if senderId:
matchSender = re.match(r'^(Kook\|User)\|(.*)', senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
return Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
match_target_regex = re.compile(r'^(Kook\|.*?)\|(.*)')
match_sender_regex = re.compile(r'^(Kook\|User)\|(.*)')
@staticmethod
async def fetch_target_list(targetList: list) -> List[Bot.FetchedSession]:

View file

@ -7,11 +7,10 @@ from typing import List, Union
from bots.matrix.client import bot, homeserver_host, client_name
from config import Config
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage
from core.builtins import Bot, Plain, Image, Voice, MessageSession as MS, ErrorMessage, FetchTarget as FT
from core.builtins.message.chain import MessageChain
from core.logger import Logger
from core.types import MsgInfo, Session, FetchTarget as FT, \
FinishedSession as FinS
from core.types import FinishedSession as FinS
from core.utils.image import image_split
from database import BotDBUtil
import nio
@ -243,23 +242,14 @@ Bot.FetchedSession = FetchedSession
class FetchTarget(FT):
name = client_name
match_target_regex = re.compile(r'^(Matrix)\|(.*)')
match_sender_regex = re.compile(r'^(Matrix)\|(.*)')
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[FetchedSession]:
matchChannel = re.match(r'^(Matrix)\|(.*)', targetId)
if matchChannel:
targetFrom = senderFrom = matchChannel.group(1)
targetId = matchChannel.group(2)
if senderId:
matchSender = re.match(r'^(Matrix)\|(.*)', senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
session = Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
await session._resolve_matrix_room_()
return session
fet = await super().fetch_target(targetId, senderId)
if fet:
return await fet._resolve_matrix_room_()
@staticmethod
async def fetch_target_list(targetList: list) -> List[FetchedSession]:

View file

@ -1,3 +1,4 @@
import re
from typing import Union, List
from config import Config
@ -73,6 +74,27 @@ class FetchedSession(FS):
self.parent.target.senderInfo = BotDBUtil.SenderInfo(f'{senderFrom}|{senderId}')
class FetchTarget(FetchTarget):
match_target_regex = re.compile(r'^(.*)\|(.*)')
match_sender_regex = re.compile(r'^(.*)\|(.*)')
@staticmethod
async def fetch_target(targetId, senderId=None) -> Union[Bot.FetchedSession]:
matchTarget = re.match(FetchTarget.match_target_regex, targetId)
if matchTarget:
targetFrom = senderFrom = matchTarget.group(1)
targetId = matchTarget.group(2)
if senderId:
matchSender = re.match(FetchTarget.match_sender_regex, senderId)
if matchSender:
senderFrom = matchSender.group(1)
senderId = matchSender.group(2)
else:
senderId = targetId
return Bot.FetchedSession(targetFrom, targetId, senderFrom, senderId)
Bot.FetchedSession = FetchedSession