reduce duplication of code
This commit is contained in:
parent
5f8dc09547
commit
87dc9b7bf7
6 changed files with 46 additions and 94 deletions
|
@ -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]:
|
||||
|
|
|
@ -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]:
|
||||
|
|
|
@ -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]:
|
||||
|
|
|
@ -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]:
|
||||
|
|
|
@ -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]:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Reference in a new issue