mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +08:00
add use queue, default disable it
This commit is contained in:
parent
0161ec07d6
commit
568000af70
@ -10,7 +10,6 @@ from nonebot.matcher import Matcher
|
||||
|
||||
from .config import Config, NoSuchSubscribeException
|
||||
from .platform import platform_manager, check_sub_target
|
||||
from .send import send_msgs
|
||||
from .utils import parse_text
|
||||
from .types import Target
|
||||
|
||||
@ -118,7 +117,6 @@ def do_query_sub(query_sub: Type[Matcher]):
|
||||
if platform.enable_tag:
|
||||
res += ' {}'.format(', '.join(sub['tags']))
|
||||
res += '\n'
|
||||
# send_msgs(bot, event.group_id, 'group', [await parse_text(res)])
|
||||
await query_sub.finish(Message(await parse_text(res)))
|
||||
|
||||
def do_del_sub(del_sub: Type[Matcher]):
|
||||
|
@ -10,6 +10,7 @@ class PlugConfig(BaseSettings):
|
||||
hk_reporter_use_local: bool = False
|
||||
hk_reporter_browser: str = ''
|
||||
hk_reporter_init_filter: bool = True
|
||||
hk_reporter_use_queue: bool = False
|
||||
|
||||
class Config:
|
||||
extra = 'ignore'
|
||||
|
@ -11,6 +11,7 @@ from .platform import platform_manager
|
||||
from .send import do_send_msgs
|
||||
from .send import send_msgs
|
||||
from .types import UserSubInfo
|
||||
from .plugin_config import plugin_config
|
||||
|
||||
scheduler = AsyncIOScheduler()
|
||||
|
||||
@ -43,7 +44,7 @@ async def fetch_and_send(target_type: str):
|
||||
if not bot:
|
||||
logger.warning('no bot connected')
|
||||
else:
|
||||
send_msgs(bot, user.user, user.user_type, await send_post.generate_messages())
|
||||
await send_msgs(bot, user.user, user.user_type, await send_post.generate_messages())
|
||||
|
||||
for platform_name, platform in platform_manager.items():
|
||||
if platform.schedule_type in ['cron', 'interval', 'date']:
|
||||
@ -52,16 +53,17 @@ for platform_name, platform in platform_manager.items():
|
||||
fetch_and_send, platform.schedule_type, **platform.schedule_kw,
|
||||
args=(platform_name,))
|
||||
|
||||
scheduler.add_job(do_send_msgs, 'interval', seconds=0.3, coalesce=True)
|
||||
if plugin_config.hk_reporter_use_queue:
|
||||
scheduler.add_job(do_send_msgs, 'interval', seconds=0.3, coalesce=True)
|
||||
|
||||
class SchedulerLogFilter(logging.Filter):
|
||||
class SchedulerLogFilter(logging.Filter):
|
||||
|
||||
def filter(self, record: logging.LogRecord) -> bool:
|
||||
logger.debug("logRecord", record, record.getMessage())
|
||||
return not (record.name == "apscheduler" and 'skipped: maximum number of running instances reached' in record.getMessage())
|
||||
def filter(self, record: logging.LogRecord) -> bool:
|
||||
logger.debug("logRecord", record, record.getMessage())
|
||||
return not (record.name == "apscheduler" and 'skipped: maximum number of running instances reached' in record.getMessage())
|
||||
|
||||
aps_logger = logging.getLogger("apscheduler")
|
||||
aps_logger.setLevel(30)
|
||||
aps_logger.addFilter(SchedulerLogFilter())
|
||||
aps_logger.handlers.clear()
|
||||
aps_logger.addHandler(LoguruHandler())
|
||||
aps_logger = logging.getLogger("apscheduler")
|
||||
aps_logger.setLevel(30)
|
||||
aps_logger.addFilter(SchedulerLogFilter())
|
||||
aps_logger.handlers.clear()
|
||||
aps_logger.addHandler(LoguruHandler())
|
||||
|
@ -1,9 +1,18 @@
|
||||
from nonebot import logger
|
||||
import time
|
||||
|
||||
from nonebot import logger
|
||||
from nonebot.adapters.cqhttp.bot import Bot
|
||||
|
||||
from .plugin_config import plugin_config
|
||||
|
||||
QUEUE = []
|
||||
LAST_SEND_TIME = time.time()
|
||||
|
||||
async def _do_send(bot: 'Bot', user: str, user_type: str, msg):
|
||||
if user_type == 'group':
|
||||
await bot.call_api('send_group_msg', group_id=user, message=msg)
|
||||
elif user_type == 'private':
|
||||
await bot.call_api('send_private_msg', user_id=user, message=msg)
|
||||
|
||||
async def do_send_msgs():
|
||||
global LAST_SEND_TIME
|
||||
@ -12,10 +21,7 @@ async def do_send_msgs():
|
||||
if QUEUE:
|
||||
bot, user, user_type, msg, retry_time = QUEUE.pop(0)
|
||||
try:
|
||||
if user_type == 'group':
|
||||
await bot.call_api('send_group_msg', group_id=user, message=msg)
|
||||
elif user_type == 'private':
|
||||
await bot.call_api('send_private_msg', user_id=user, message=msg)
|
||||
await _do_send(bot, user, user_type, msg)
|
||||
except:
|
||||
if retry_time > 0:
|
||||
QUEUE.insert(0, (bot, user, user_type, msg, retry_time - 1))
|
||||
@ -23,8 +29,12 @@ async def do_send_msgs():
|
||||
logger.warning('send msg err {}'.format(msg))
|
||||
LAST_SEND_TIME = time.time()
|
||||
|
||||
def send_msgs(bot, user, user_type, msgs):
|
||||
for msg in msgs:
|
||||
QUEUE.append((bot, user, user_type, msg, 2))
|
||||
async def send_msgs(bot, user, user_type, msgs):
|
||||
if plugin_config.hk_reporter_use_queue:
|
||||
for msg in msgs:
|
||||
QUEUE.append((bot, user, user_type, msg, 2))
|
||||
else:
|
||||
for msg in msgs:
|
||||
await _do_send(bot, user, user_type, msg)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user