mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-11-16 04:35:49 +00:00
🎨 Optimize auto-sign login
This commit is contained in:
parent
c19eb4679a
commit
6d540b9c66
@ -1,25 +1,27 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
from telegram.ext import CallbackContext
|
|
||||||
|
|
||||||
from core.plugin import Plugin, job
|
from core.plugin import Plugin, job
|
||||||
from plugins.genshin.sign import SignSystem
|
from plugins.genshin.sign import SignSystem
|
||||||
from plugins.tools.sign import SignJobType
|
from plugins.tools.sign import SignJobType
|
||||||
from utils.log import logger
|
from utils.log import logger
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from telegram.ext import ContextTypes
|
||||||
|
|
||||||
|
|
||||||
class SignJob(Plugin):
|
class SignJob(Plugin):
|
||||||
def __init__(self, sign_system: SignSystem):
|
def __init__(self, sign_system: SignSystem):
|
||||||
self.sign_system = sign_system
|
self.sign_system = sign_system
|
||||||
|
|
||||||
@job.run_daily(time=datetime.time(hour=0, minute=1, second=0), name="SignJob")
|
@job.run_daily(time=datetime.time(hour=0, minute=1, second=0), name="SignJob")
|
||||||
async def sign(self, context: CallbackContext):
|
async def sign(self, context: "ContextTypes.DEFAULT_TYPE"):
|
||||||
logger.info("正在执行自动签到")
|
logger.info("正在执行自动签到")
|
||||||
await self.sign_system.do_sign_job(context, job_type=SignJobType.START)
|
await self.sign_system.do_sign_job(context, job_type=SignJobType.START)
|
||||||
logger.success("执行自动签到完成")
|
logger.success("执行自动签到完成")
|
||||||
await self.re_sign(context)
|
await self.re_sign(context)
|
||||||
|
|
||||||
async def re_sign(self, context: CallbackContext):
|
async def re_sign(self, context: "ContextTypes.DEFAULT_TYPE"):
|
||||||
logger.info("正在执行自动重签")
|
logger.info("正在执行自动重签")
|
||||||
await self.sign_system.do_sign_job(context, job_type=SignJobType.REDO)
|
await self.sign_system.do_sign_job(context, job_type=SignJobType.REDO)
|
||||||
logger.success("执行自动重签完成")
|
logger.success("执行自动重签完成")
|
||||||
|
@ -4,7 +4,7 @@ import random
|
|||||||
import time
|
import time
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from typing import Optional, Tuple, List
|
from typing import Optional, Tuple, List, TYPE_CHECKING
|
||||||
|
|
||||||
from aiohttp import ClientConnectorError
|
from aiohttp import ClientConnectorError
|
||||||
from genshin import Game, GenshinException, AlreadyClaimed, Client, InvalidCookies
|
from genshin import Game, GenshinException, AlreadyClaimed, Client, InvalidCookies
|
||||||
@ -13,7 +13,6 @@ from httpx import AsyncClient, TimeoutException
|
|||||||
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
|
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
|
||||||
from telegram.constants import ParseMode
|
from telegram.constants import ParseMode
|
||||||
from telegram.error import Forbidden, BadRequest
|
from telegram.error import Forbidden, BadRequest
|
||||||
from telegram.ext import CallbackContext
|
|
||||||
|
|
||||||
from core.config import config
|
from core.config import config
|
||||||
from core.dependence.redisdb import RedisDB
|
from core.dependence.redisdb import RedisDB
|
||||||
@ -26,6 +25,9 @@ from modules.apihelper.client.components.verify import Verify
|
|||||||
from plugins.tools.genshin import GenshinHelper, CookiesNotFoundError, PlayerNotFoundError
|
from plugins.tools.genshin import GenshinHelper, CookiesNotFoundError, PlayerNotFoundError
|
||||||
from utils.log import logger
|
from utils.log import logger
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from telegram.ext import ContextTypes
|
||||||
|
|
||||||
|
|
||||||
class SignJobType(Enum):
|
class SignJobType(Enum):
|
||||||
START = 1
|
START = 1
|
||||||
@ -311,7 +313,7 @@ class SignSystem(Plugin):
|
|||||||
)
|
)
|
||||||
return message
|
return message
|
||||||
|
|
||||||
async def do_sign_job(self, context: CallbackContext, job_type: SignJobType):
|
async def do_sign_job(self, context: "ContextTypes.DEFAULT_TYPE", job_type: SignJobType):
|
||||||
include_status: List[SignStatusEnum] = [
|
include_status: List[SignStatusEnum] = [
|
||||||
SignStatusEnum.STATUS_SUCCESS,
|
SignStatusEnum.STATUS_SUCCESS,
|
||||||
SignStatusEnum.TIMEOUT_ERROR,
|
SignStatusEnum.TIMEOUT_ERROR,
|
||||||
@ -321,6 +323,7 @@ class SignSystem(Plugin):
|
|||||||
title = "自动签到"
|
title = "自动签到"
|
||||||
elif job_type == SignJobType.REDO:
|
elif job_type == SignJobType.REDO:
|
||||||
title = "自动重新签到"
|
title = "自动重新签到"
|
||||||
|
include_status.remove(SignStatusEnum.STATUS_SUCCESS)
|
||||||
else:
|
else:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
sign_list = await self.sign_service.get_all()
|
sign_list = await self.sign_service.get_all()
|
||||||
@ -344,7 +347,7 @@ class SignSystem(Plugin):
|
|||||||
text = "签到失败了呜呜呜 ~ 服务器连接超时 服务器熟啦 ~ "
|
text = "签到失败了呜呜呜 ~ 服务器连接超时 服务器熟啦 ~ "
|
||||||
sign_db.status = SignStatusEnum.TIMEOUT_ERROR
|
sign_db.status = SignStatusEnum.TIMEOUT_ERROR
|
||||||
except NeedChallenge:
|
except NeedChallenge:
|
||||||
text = "签到失败,触发验证码风控,自动签到自动关闭"
|
text = "签到失败,触发验证码风控"
|
||||||
sign_db.status = SignStatusEnum.NEED_CHALLENGE
|
sign_db.status = SignStatusEnum.NEED_CHALLENGE
|
||||||
except PlayerNotFoundError:
|
except PlayerNotFoundError:
|
||||||
logger.info("用户 user_id[%s] 玩家不存在 关闭并移除自动签到", user_id)
|
logger.info("用户 user_id[%s] 玩家不存在 关闭并移除自动签到", user_id)
|
||||||
|
Loading…
Reference in New Issue
Block a user