modified: basic_plugins/admin_bot_manage/_data_source.py

modified:   basic_plugins/admin_bot_manage/admin_config.py
	modified:   basic_plugins/admin_bot_manage/custom_welcome_message.py
	modified:   basic_plugins/admin_bot_manage/timing_task.py
	modified:   basic_plugins/apscheduler/__init__.py
	modified:   basic_plugins/ban/__init__.py
	modified:   basic_plugins/ban/data_source.py
	modified:   basic_plugins/chat_history/chat_message.py
	modified:   basic_plugins/chat_history/chat_message_handle.py
	modified:   basic_plugins/group_handle/__init__.py
	modified:   basic_plugins/hooks/_utils.py
	modified:   basic_plugins/hooks/ban_hook.py
	modified:   basic_plugins/hooks/chkdsk_hook.py
	modified:   basic_plugins/init_plugin_config/__init__.py
	deleted:    basic_plugins/init_plugin_config/init_group_manager.py
	modified:   basic_plugins/invite_manager/__init__.py
	new file:   basic_plugins/invite_manager/utils.py
	modified:   basic_plugins/nickname.py
	modified:   basic_plugins/plugin_shop/__init__.py
	modified:   basic_plugins/plugin_shop/data_source.py
	modified:   basic_plugins/scripts.py
	modified:   basic_plugins/shop/__init__.py
	modified:   basic_plugins/shop/buy.py
	modified:   basic_plugins/shop/gold.py
	modified:   basic_plugins/shop/my_props/__init__.py
	deleted:    basic_plugins/shop/reset_today_gold.py
	modified:   basic_plugins/shop/shop_handle/__init__.py
	modified:   basic_plugins/shop/shop_handle/data_source.py
	modified:   basic_plugins/shop/use/__init__.py
	modified:   basic_plugins/shop/use/data_source.py
	modified:   basic_plugins/super_cmd/__init__.py
	modified:   basic_plugins/super_cmd/bot_friend_group.py
	modified:   basic_plugins/super_cmd/clear_data.py
	modified:   basic_plugins/super_cmd/exec_sql.py
	modified:   basic_plugins/super_cmd/manager_group.py
	modified:   basic_plugins/super_cmd/reload_setting.py
	modified:   basic_plugins/super_cmd/set_admin_permissions.py
	deleted:    basic_plugins/super_cmd/super_task_switch.py
	modified:   basic_plugins/super_cmd/update_friend_group_info.py
	modified:   basic_plugins/super_help/__init__.py
	modified:   basic_plugins/update_info.py
	modified:   configs/config.py
	modified:   configs/utils/__init__.py
	modified:   models/bag_user.py
	modified:   models/ban_user.py
	modified:   models/chat_history.py
	modified:   models/friend_user.py
	modified:   models/goods_info.py
	modified:   models/group_info.py
	modified:   models/group_member_info.py
	modified:   models/level_user.py
	modified:   models/sign_group_user.py
	modified:   models/user_shop_gold_log.py
	modified:   plugins/aconfig/__init__.py
	modified:   plugins/ai/__init__.py
	modified:   plugins/ai/data_source.py
	modified:   plugins/bilibili_sub/__init__.py
	modified:   plugins/bilibili_sub/data_source.py
	modified:   plugins/bilibili_sub/model.py
	modified:   plugins/black_word/__init__.py
	modified:   plugins/black_word/model.py
	modified:   plugins/black_word/utils.py
	modified:   plugins/bt/data_source.py
	modified:   plugins/genshin/almanac/__init__.py
	modified:   plugins/genshin/material_remind/__init__.py
	modified:   plugins/genshin/query_user/_models/__init__.py
	modified:   plugins/genshin/query_user/_utils/__init__.py
	modified:   plugins/genshin/query_user/bind/__init__.py
	modified:   plugins/genshin/query_user/genshin_sign/__init__.py
	modified:   plugins/genshin/query_user/genshin_sign/data_source.py
	modified:   plugins/genshin/query_user/genshin_sign/init_task.py
	modified:   plugins/genshin/query_user/mihoyobbs_sign/__init__.py
	modified:   plugins/genshin/query_user/query_memo/__init__.py
	modified:   plugins/genshin/query_user/query_memo/data_source.py
	modified:   plugins/genshin/query_user/query_role/__init__.py
	modified:   plugins/genshin/query_user/query_role/data_source.py
	modified:   plugins/genshin/query_user/reset_today_query_user_data/__init__.py
	modified:   plugins/genshin/query_user/resin_remind/__init__.py
	modified:   plugins/genshin/query_user/resin_remind/init_task.py
	modified:   plugins/gold_redbag/model.py
	modified:   plugins/image_management/send_image/__init__.py
	modified:   plugins/my_info/__init__.py
	modified:   plugins/open_cases/models/buff_prices.py
	modified:   plugins/open_cases/models/open_cases_user.py
	modified:   plugins/open_cases/open_cases_c.py
	modified:   plugins/open_cases/utils.py
	modified:   plugins/parse_bilibili_json.py
	modified:   plugins/pid_search.py
	modified:   plugins/pix_gallery/__init__.py
	modified:   plugins/pix_gallery/_data_source.py
	modified:   plugins/pix_gallery/_model/omega_pixiv_illusts.py
	modified:   plugins/pix_gallery/_model/pixiv.py
	modified:   plugins/pix_gallery/_model/pixiv_keyword_user.py
	modified:   plugins/pix_gallery/pix_add_keyword.py
	modified:   plugins/pix_gallery/pix_pass_del_keyword.py
	modified:   plugins/pix_gallery/pix_show_info.py
	modified:   plugins/pix_gallery/pix_update.py
	modified:   plugins/pixiv_rank_search/data_source.py
	modified:   plugins/poke/__init__.py
	modified:   plugins/russian/__init__.py
	modified:   plugins/russian/data_source.py
	modified:   plugins/russian/model.py
	modified:   plugins/send_dinggong_voice/__init__.py
	modified:   plugins/send_setu_/_model.py
	modified:   plugins/send_setu_/send_setu/__init__.py
	modified:   plugins/send_setu_/send_setu/data_source.py
	modified:   plugins/send_setu_/update_setu/data_source.py
	modified:   plugins/sign_in/goods_register.py
	modified:   plugins/sign_in/group_user_checkin.py
	modified:   plugins/sign_in/random_event.py
	modified:   plugins/sign_in/utils.py
	modified:   plugins/statistics/_model.py
	modified:   plugins/statistics/statistics_handle.py
	modified:   plugins/statistics/statistics_hook.py
	modified:   plugins/update_picture.py
	modified:   plugins/web_ui/api/request.py
	modified:   plugins/word_bank/_model.py
	deleted:    plugins/word_bank/_old_model.py
	modified:   plugins/word_bank/_rule.py
	modified:   plugins/word_bank/word_handle.py
	modified:   plugins/word_clouds/data_source.py
	modified:   resources/image/sign/sign_res/bar.png
	modified:   resources/image/sign/sign_res/bar_white.png
	modified:   services/db_context.py
	modified:   services/log.py
	modified:   utils/browser.py
	modified:   utils/data_utils.py
	modified:   utils/depends/__init__.py
	modified:   utils/http_utils.py
	modified:   utils/image_utils.py
	modified:   utils/manager/admin_manager.py
	modified:   utils/message_builder.py
	modified:   utils/utils.py
This commit is contained in:
HibiKier
2023-02-18 18:46:54 +08:00
parent a6105e8a1b
commit 7685b95031
134 changed files with 5402 additions and 6033 deletions
@@ -1,20 +1,20 @@
from nonebot.adapters.onebot.v11 import ActionFailed
from utils.utils import get_bot, scheduler
from utils.message_builder import at
from models.group_member_info import GroupInfoUser
from apscheduler.jobstores.base import ConflictingIdError
from nonebot import Driver
from .._models import Genshin
from datetime import datetime, timedelta
from apscheduler.jobstores.base import JobLookupError
from services.log import logger
from nonebot.plugin import require
from configs.config import Config
import random
from datetime import datetime, timedelta
import nonebot
import pytz
from apscheduler.jobstores.base import ConflictingIdError, JobLookupError
from nonebot import Driver
from nonebot.adapters.onebot.v11 import ActionFailed
from nonebot.plugin import require
from configs.config import Config
from models.group_member_info import GroupInfoUser
from services.log import logger
from utils.message_builder import at
from utils.utils import get_bot, scheduler
from .._models import Genshin
driver: Driver = nonebot.get_driver()
@@ -23,7 +23,6 @@ require("query_memo")
from ..query_memo import get_memo
global_map = {}
@@ -80,12 +79,13 @@ async def _():
"""
启动时分配定时任务
"""
g_list = await Genshin.get_all_resin_remind_user()
g_list = await Genshin.filter(resin_remind=True).all()
update_list = []
date = datetime.now(pytz.timezone("Asia/Shanghai")) + timedelta(seconds=30)
for u in g_list:
if u.resin_remind:
if u.resin_recovery_time:
if await Genshin.get_user_resin_recovery_time(u.uid) > datetime.now(
if u.resin_recovery_time and u.resin_recovery_time > datetime.now(
pytz.timezone("Asia/Shanghai")
):
# date = await Genshin.get_user_resin_recovery_time(u.uid) # 不能要,因为可能在这期间用户使用了树脂
@@ -101,7 +101,8 @@ async def _():
f"genshin_resin_remind add_job:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
)
else:
await Genshin.clear_resin_remind_time(u.uid)
u.resin_recovery_time = None
update_list.append(u)
add_job(u.user_qq, u.uid)
logger.info(
f"genshin_resin_remind add_job CHECK:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
@@ -111,6 +112,8 @@ async def _():
logger.info(
f"genshin_resin_remind add_job CHECK:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
)
if update_list:
await Genshin.bulk_update(update_list, ["resin_recovery_time"])
def add_job(user_id: int, uid: int):
@@ -133,6 +136,7 @@ def add_job(user_id: int, uid: int):
async def _remind(user_id: int, uid: str):
user = await Genshin.get_or_none(user_qq=user_id, uid=int(uid))
uid = str(uid)
if uid[0] in ["1", "2"]:
server_id = "cn_gf01"
@@ -158,7 +162,9 @@ async def _remind(user_id: int, uid: str):
elif max_resin - 20 <= current_resin < max_resin:
next_time = now + timedelta(minutes=(max_resin - current_resin) * 8)
elif current_resin == max_resin:
custom_overflow_resin = Config.get_config("resin_remind", "CUSTOM_RESIN_OVERFLOW_REMIND")
custom_overflow_resin = Config.get_config(
"resin_remind", "CUSTOM_RESIN_OVERFLOW_REMIND"
)
if user_manager.is_overflow(uid) and custom_overflow_resin:
next_time = now + timedelta(minutes=custom_overflow_resin * 8)
user_manager.add_overflow(uid)
@@ -178,28 +184,35 @@ async def _remind(user_id: int, uid: str):
message=msg,
)
else:
group_id = await Genshin.get_bind_group(int(uid))
if not group_id:
group_list = await GroupInfoUser.get_user_all_group(user_id)
if group_list:
group_id = group_list[0]
try:
await bot.send_group_msg(
group_id=group_id,
message=at(user_id) + msg
)
except ActionFailed as e:
logger.error(f"树脂提醒推送发生错误 {type(e)}:{e}")
if user:
group_id = user.bind_group
if not group_id:
if group_list := await GroupInfoUser.get_user_all_group(
user_id
):
group_id = group_list[0]
try:
await bot.send_group_msg(
group_id=group_id, message=at(user_id) + msg
)
except ActionFailed as e:
logger.error(f"树脂提醒推送发生错误 {type(e)}:{e}")
if not next_time:
if user_manager.check(uid) and Config.get_config("resin_remind", "AUTO_CLOSE_QUERY_FAIL_RESIN_REMIND"):
await Genshin.set_resin_remind(int(uid), False)
await Genshin.clear_resin_remind_time(int(uid))
if user_manager.check(uid) and Config.get_config(
"resin_remind", "AUTO_CLOSE_QUERY_FAIL_RESIN_REMIND"
):
if user:
user.resin_remind = False
user.resin_recovery_time = None
await user.save(update_fields=["resin_recovery_time", "resin_remind"])
next_time = now + timedelta(minutes=(20 + random.randint(5, 20)) * 8)
user_manager.add_error_count(uid)
else:
user_manager.remove_error_count(uid)
await Genshin.set_user_resin_recovery_time(int(uid), next_time)
if user:
user.resin_recovery_time = next_time
await user.save(update_fields=["resin_recovery_time", "resin_remind"])
scheduler.add_job(
_remind,
"date",
@@ -208,6 +221,5 @@ async def _remind(user_id: int, uid: str):
args=[user_id, uid],
)
logger.info(
f"genshin_resin_remind add_job:USER:{user_id} UID:{uid} "
f"{next_time} 原神树脂提醒"
)
f"genshin_resin_remind add_job:USER:{user_id} UID:{uid} " f"{next_time} 原神树脂提醒"
)