mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-21 12:10:13 +08:00
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:
@@ -1,14 +1,17 @@
|
||||
from .data_source import get_sign_reward_list, genshin_sign
|
||||
from ..mihoyobbs_sign import mihoyobbs_sign
|
||||
from nonebot.adapters.onebot.v11 import MessageEvent, GroupMessageEvent
|
||||
from nonebot import on_command
|
||||
from services.log import logger
|
||||
from .init_task import add_job, scheduler, _sign
|
||||
from apscheduler.jobstores.base import JobLookupError
|
||||
from .._models import Genshin
|
||||
from nonebot.params import Command
|
||||
from typing import Tuple
|
||||
|
||||
from apscheduler.jobstores.base import JobLookupError
|
||||
from nonebot import on_command
|
||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
||||
from nonebot.params import Command
|
||||
|
||||
from services.log import logger
|
||||
from utils.depends import OneCommand
|
||||
|
||||
from .._models import Genshin
|
||||
from ..mihoyobbs_sign import mihoyobbs_sign
|
||||
from .data_source import genshin_sign, get_sign_reward_list
|
||||
from .init_task import _sign, add_job, scheduler
|
||||
|
||||
__zx_plugin_name__ = "原神自动签到"
|
||||
__plugin_usage__ = """
|
||||
@@ -39,45 +42,46 @@ genshin_matcher = on_command(
|
||||
|
||||
|
||||
@genshin_matcher.handle()
|
||||
async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
|
||||
cmd = cmd[0]
|
||||
uid = await Genshin.get_user_uid(event.user_id)
|
||||
async def _(event: MessageEvent, cmd: str = OneCommand()):
|
||||
user = await Genshin.get_or_none(user_qq=event.user_id)
|
||||
if not user:
|
||||
await genshin_matcher.finish("请先绑定user.uid...")
|
||||
if cmd == "查看我的cookie":
|
||||
my_cookie = await Genshin.get_user_cookie(uid, True)
|
||||
if isinstance(event, GroupMessageEvent):
|
||||
await genshin_matcher.finish("请私聊查看您的cookie!")
|
||||
await genshin_matcher.finish("您的cookie为" + my_cookie)
|
||||
if not uid or not await Genshin.get_user_cookie(uid, True):
|
||||
await genshin_matcher.finish("请先绑定uid和cookie!")
|
||||
# if "account_id" not in await Genshin.get_user_cookie(uid, True):
|
||||
await genshin_matcher.finish("您的cookie为" + user.cookie)
|
||||
if not user.uid or not user.cookie:
|
||||
await genshin_matcher.finish("请先绑定user.uid和cookie!")
|
||||
# if "account_id" not in await Genshin.get_user_cookie(user.uid, True):
|
||||
# await genshin_matcher.finish("请更新cookie!")
|
||||
if cmd == "原神我硬签":
|
||||
try:
|
||||
await genshin_matcher.send("正在进行签到...", at_sender=True)
|
||||
msg = await genshin_sign(uid)
|
||||
msg = await genshin_sign(user.uid)
|
||||
return_data = await mihoyobbs_sign(event.user_id)
|
||||
logger.info(
|
||||
f"(USER {event.user_id}, "
|
||||
f"GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) UID:{uid} 原神签到"
|
||||
f"GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) UID:{user.uid} 原神签到"
|
||||
)
|
||||
logger.info(msg)
|
||||
# 硬签,移除定时任务
|
||||
try:
|
||||
for i in range(3):
|
||||
scheduler.remove_job(f"genshin_auto_sign_{uid}_{event.user_id}_{i}",)
|
||||
scheduler.remove_job(
|
||||
f"genshin_auto_sign_{user.uid}_{event.user_id}_{i}",
|
||||
)
|
||||
except JobLookupError:
|
||||
pass
|
||||
u = await Genshin.get_user_by_uid(uid)
|
||||
if u and u.auto_sign:
|
||||
await u.clear_sign_time(uid)
|
||||
next_date = await Genshin.random_sign_time(uid)
|
||||
add_job(event.user_id, uid, next_date)
|
||||
if user.auto_sign:
|
||||
user.auto_sign_time = None
|
||||
next_date = await Genshin.random_sign_time(user.uid)
|
||||
add_job(event.user_id, user.uid, next_date)
|
||||
msg += f"\n{return_data}\n因开启自动签到\n下一次签到时间为:{next_date.replace(microsecond=0)}"
|
||||
except Exception as e:
|
||||
msg = "原神签到失败..请尝试检查cookie或报告至管理员!"
|
||||
logger.info(
|
||||
f"(USER {event.user_id}, "
|
||||
f"GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) UID:{uid} 原神签到发生错误 "
|
||||
f"GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) UID:{user.uid} 原神签到发生错误 "
|
||||
f"{type(e)}:{e}"
|
||||
)
|
||||
msg = msg or "请检查cookie是否更新!"
|
||||
@@ -85,13 +89,16 @@ async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
|
||||
else:
|
||||
for i in range(3):
|
||||
try:
|
||||
scheduler.remove_job(f"genshin_auto_sign_{uid}_{event.user_id}_{i}")
|
||||
scheduler.remove_job(
|
||||
f"genshin_auto_sign_{user.uid}_{event.user_id}_{i}"
|
||||
)
|
||||
except JobLookupError:
|
||||
pass
|
||||
if cmd[0] == "开":
|
||||
await Genshin.set_auto_sign(uid, True)
|
||||
next_date = await Genshin.random_sign_time(uid)
|
||||
add_job(event.user_id, uid, next_date)
|
||||
next_date = await Genshin.random_sign_time(user.uid)
|
||||
user.auto_sign = True
|
||||
user.auto_sign_time = next_date
|
||||
add_job(event.user_id, user.uid, next_date)
|
||||
await genshin_matcher.send(
|
||||
f"已开启原神自动签到!\n下一次签到时间为:{next_date.replace(microsecond=0)}",
|
||||
at_sender=True,
|
||||
@@ -102,11 +109,13 @@ async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
|
||||
f" 开启原神自动签到"
|
||||
)
|
||||
else:
|
||||
await Genshin.set_auto_sign(uid, False)
|
||||
await Genshin.clear_sign_time(uid)
|
||||
user.auto_sign = False
|
||||
user.auto_sign_time = None
|
||||
await genshin_matcher.send(f"已关闭原神自动签到!", at_sender=True)
|
||||
logger.info(
|
||||
f"(USER {event.user_id}, GROUP "
|
||||
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||
f" 关闭原神自动签到"
|
||||
)
|
||||
if user:
|
||||
await user.save(update_fields=["auto_sign_time", "auto_sign"])
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
from utils.http_utils import AsyncHttpx
|
||||
from configs.config import Config
|
||||
from services.log import logger
|
||||
from ..mihoyobbs_sign.setting import *
|
||||
from .._models import Genshin
|
||||
from typing import Optional, Dict
|
||||
import hashlib
|
||||
import random
|
||||
import string
|
||||
import uuid
|
||||
import time
|
||||
import uuid
|
||||
from typing import Dict, Optional
|
||||
|
||||
from configs.config import Config
|
||||
from services.log import logger
|
||||
from utils.http_utils import AsyncHttpx
|
||||
|
||||
from .._models import Genshin
|
||||
from ..mihoyobbs_sign.setting import *
|
||||
|
||||
|
||||
async def genshin_sign(uid: int) -> Optional[str]:
|
||||
@@ -28,10 +30,10 @@ async def genshin_sign(uid: int) -> Optional[str]:
|
||||
sign_list = await get_sign_reward_list()
|
||||
get_reward = sign_list["data"]["awards"][
|
||||
int(sign_info["total_sign_day"]) - 1
|
||||
]["name"]
|
||||
]["name"]
|
||||
reward_num = sign_list["data"]["awards"][
|
||||
int(sign_info["total_sign_day"]) - 1
|
||||
]["cnt"]
|
||||
]["cnt"]
|
||||
get_im = f"本次签到获得:{get_reward}x{reward_num}"
|
||||
logger.info("get_im:" + get_im + "\nsign_info:" + str(sign_info))
|
||||
if status == "OK" and sign_info["is_sign"]:
|
||||
@@ -64,7 +66,7 @@ def timestamp() -> int:
|
||||
|
||||
|
||||
def random_text(num: int) -> str:
|
||||
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||
return "".join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||
|
||||
|
||||
def md5(text: str) -> str:
|
||||
@@ -75,8 +77,7 @@ def md5(text: str) -> str:
|
||||
|
||||
# 生成一个device id
|
||||
def get_device_id(cookie) -> str:
|
||||
return str(uuid.uuid3(uuid.NAMESPACE_URL, cookie)).replace(
|
||||
'-', '').upper()
|
||||
return str(uuid.uuid3(uuid.NAMESPACE_URL, cookie)).replace("-", "").upper()
|
||||
|
||||
|
||||
async def _sign(uid: int, server_id: str = "cn_gf01") -> Optional[Dict[str, str]]:
|
||||
@@ -88,18 +89,20 @@ async def _sign(uid: int, server_id: str = "cn_gf01") -> Optional[Dict[str, str]
|
||||
if str(uid)[0] == "5":
|
||||
server_id = "cn_qd01"
|
||||
try:
|
||||
cookie = await Genshin.get_user_cookie(uid, True)
|
||||
headers['DS'] = get_ds(web=True)
|
||||
headers['Referer'] = 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true' \
|
||||
f'&act_id={genshin_Act_id}&utm_source=bbs&utm_medium=mys&utm_campaign=icon'
|
||||
headers['Cookie'] = cookie
|
||||
headers['x-rpc-device_id'] = get_device_id(cookie)
|
||||
req = await AsyncHttpx.post(
|
||||
url=genshin_Signurl,
|
||||
headers=headers,
|
||||
json={"act_id": genshin_Act_id, "uid": uid, "region": server_id},
|
||||
)
|
||||
return req.json()
|
||||
if user := await Genshin.get_or_none(uid=uid):
|
||||
headers["DS"] = get_ds(web=True)
|
||||
headers["Referer"] = (
|
||||
"https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true"
|
||||
f"&act_id={genshin_Act_id}&utm_source=bbs&utm_medium=mys&utm_campaign=icon"
|
||||
)
|
||||
headers["Cookie"] = user.cookie
|
||||
headers["x-rpc-device_id"] = get_device_id(user.cookie)
|
||||
req = await AsyncHttpx.post(
|
||||
url=genshin_Signurl,
|
||||
headers=headers,
|
||||
json={"act_id": genshin_Act_id, "uid": uid, "region": server_id},
|
||||
)
|
||||
return req.json()
|
||||
except Exception as e:
|
||||
logger.error(f"米游社签到发生错误 UID:{uid} {type(e)}:{e}")
|
||||
return None
|
||||
@@ -129,17 +132,22 @@ async def _get_sign_info(uid: int, server_id: str = "cn_gf01"):
|
||||
if str(uid)[0] == "5":
|
||||
server_id = "cn_qd01"
|
||||
try:
|
||||
req = await AsyncHttpx.get(
|
||||
url=f"https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?act_id=e202009291139501®ion={server_id}&uid={uid}",
|
||||
headers={
|
||||
"x-rpc-app_version": str(Config.get_config("genshin", "mhyVersion")),
|
||||
"Cookie": await Genshin.get_user_cookie(int(uid), True),
|
||||
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1",
|
||||
"x-rpc-client_type": str(Config.get_config("genshin", "client_type")),
|
||||
"Referer": "https://webstatic.mihoyo.com/",
|
||||
},
|
||||
)
|
||||
return req.json()
|
||||
if user := await Genshin.get_or_none(uid=uid):
|
||||
req = await AsyncHttpx.get(
|
||||
url=f"https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?act_id=e202009291139501®ion={server_id}&uid={uid}",
|
||||
headers={
|
||||
"x-rpc-app_version": str(
|
||||
Config.get_config("genshin", "mhyVersion")
|
||||
),
|
||||
"Cookie": user.cookie,
|
||||
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1",
|
||||
"x-rpc-client_type": str(
|
||||
Config.get_config("genshin", "client_type")
|
||||
),
|
||||
"Referer": "https://webstatic.mihoyo.com/",
|
||||
},
|
||||
)
|
||||
return req.json()
|
||||
except Exception as e:
|
||||
logger.error(f"获取签到信息发生错误 UID:{uid} {type(e)}:{e}")
|
||||
return None
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
from .data_source import genshin_sign
|
||||
from ..mihoyobbs_sign import mihoyobbs_sign
|
||||
from models.group_member_info import GroupInfoUser
|
||||
from utils.message_builder import at
|
||||
from services.log import logger
|
||||
from utils.utils import scheduler, get_bot
|
||||
from apscheduler.jobstores.base import ConflictingIdError
|
||||
from .._models import Genshin
|
||||
from datetime import datetime, timedelta
|
||||
from nonebot import Driver
|
||||
import nonebot
|
||||
import random
|
||||
import pytz
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import nonebot
|
||||
import pytz
|
||||
from apscheduler.jobstores.base import ConflictingIdError
|
||||
from nonebot import Driver
|
||||
|
||||
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
|
||||
from ..mihoyobbs_sign import mihoyobbs_sign
|
||||
from .data_source import genshin_sign
|
||||
|
||||
driver: Driver = nonebot.get_driver()
|
||||
|
||||
@@ -21,7 +23,7 @@ async def _():
|
||||
"""
|
||||
启动时分配定时任务
|
||||
"""
|
||||
g_list = await Genshin.get_all_auto_sign_user()
|
||||
g_list = await Genshin.filter(auto_sign=True).all()
|
||||
for u in g_list:
|
||||
if u.auto_sign_time:
|
||||
if date := await Genshin.random_sign_time(u.uid):
|
||||
@@ -33,7 +35,8 @@ async def _():
|
||||
args=[u.user_qq, u.uid, 0],
|
||||
)
|
||||
logger.info(
|
||||
f"genshin_sign add_job:USER:{u.user_qq} UID:{u.uid} " f"{date} 原神自动签到"
|
||||
f"genshin_sign add_job:USER:{u.user_qq} UID:{u.uid} "
|
||||
f"{date} 原神自动签到"
|
||||
)
|
||||
|
||||
|
||||
@@ -110,10 +113,12 @@ async def _sign(user_id: int, uid: int, count: int):
|
||||
await bot.send_private_msg(user_id=user_id, message=return_data)
|
||||
await bot.send_private_msg(user_id=user_id, message=msg)
|
||||
else:
|
||||
if not (group_id := await Genshin.get_bind_group(uid)):
|
||||
group_list = await GroupInfoUser.get_user_all_group(user_id)
|
||||
if group_list:
|
||||
group_id = group_list[0]
|
||||
await bot.send_group_msg(
|
||||
group_id=group_id, message=at(user_id) + msg
|
||||
)
|
||||
if user := await Genshin.get_or_none(uid=uid):
|
||||
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]
|
||||
if group_id:
|
||||
await bot.send_group_msg(
|
||||
group_id=group_id, message=at(user_id) + msg
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user