mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-07-19 08:53:00 +08:00
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
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
|
|
if time.time() - LAST_SEND_TIME < 1.5:
|
|
return
|
|
if QUEUE:
|
|
bot, user, user_type, msg, retry_time = QUEUE.pop(0)
|
|
try:
|
|
await _do_send(bot, user, user_type, msg)
|
|
except Exception as e:
|
|
if retry_time > 0:
|
|
QUEUE.insert(0, (bot, user, user_type, msg, retry_time - 1))
|
|
else:
|
|
msg_str = str(msg)
|
|
if len(msg_str) > 50:
|
|
msg_str = msg_str[:50] + "..."
|
|
logger.warning(f"send msg err {e} {msg_str}")
|
|
LAST_SEND_TIME = time.time()
|
|
|
|
|
|
async def send_msgs(bot, user, user_type, msgs):
|
|
if plugin_config.bison_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)
|