🐛 Fix post code

This commit is contained in:
xtaodada 2024-08-03 21:13:13 +08:00
parent 1841e60f6d
commit b4c98bb2ce
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
5 changed files with 67 additions and 74 deletions

View File

@ -237,8 +237,8 @@ class Hyperion(HyperionBase):
for code_data in exchange_group.get("bonuses", []): for code_data in exchange_group.get("bonuses", []):
codes.append(LiveCodeHoYo(**code_data)) codes.append(LiveCodeHoYo(**code_data))
break break
for _ in range(len(codes), 3): # for _ in range(len(codes), 3):
codes.append(LiveCodeHoYo(exchange_code="", offline_at=guess_offline_at)) # codes.append(LiveCodeHoYo(exchange_code="", offline_at=guess_offline_at))
return codes return codes
async def close(self): async def close(self):

View File

@ -185,7 +185,7 @@ class LiveCodeHoYo(BaseModel):
@staticmethod @staticmethod
def guess_offline_at() -> datetime: def guess_offline_at() -> datetime:
return datetime.now().replace(hour=12, minute=0, second=0, microsecond=0) + timedelta(days=1) return datetime.now().replace(hour=23, minute=59, second=59, microsecond=59) + timedelta(days=1)
class PostTypeEnum(str, Enum): class PostTypeEnum(str, Enum):

View File

@ -414,7 +414,7 @@ files = [
[[package]] [[package]]
name = "black" name = "black"
version = "24.4.2" version = "24.8.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The uncompromising code formatter." summary = "The uncompromising code formatter."
groups = ["default"] groups = ["default"]
@ -428,28 +428,28 @@ dependencies = [
"typing-extensions>=4.0.1; python_version < \"3.11\"", "typing-extensions>=4.0.1; python_version < \"3.11\"",
] ]
files = [ files = [
{file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"},
{file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"},
{file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"},
{file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"},
{file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"},
{file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"},
{file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"},
{file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"},
{file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"},
{file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"},
{file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"},
{file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"},
{file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"},
{file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"},
{file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"},
{file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"},
{file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"},
{file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"},
{file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"},
{file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"},
{file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"},
{file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"},
] ]
[[package]] [[package]]
@ -2487,7 +2487,7 @@ files = [
[[package]] [[package]]
name = "uvicorn" name = "uvicorn"
version = "0.30.4" version = "0.30.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The lightning-fast ASGI server." summary = "The lightning-fast ASGI server."
groups = ["default"] groups = ["default"]
@ -2497,13 +2497,13 @@ dependencies = [
"typing-extensions>=4.0; python_version < \"3.11\"", "typing-extensions>=4.0; python_version < \"3.11\"",
] ]
files = [ files = [
{file = "uvicorn-0.30.4-py3-none-any.whl", hash = "sha256:06b00e3087e58c6865c284143c0c42f810b32ff4f265ab19d08c566f74a08728"}, {file = "uvicorn-0.30.5-py3-none-any.whl", hash = "sha256:b2d86de274726e9878188fa07576c9ceeff90a839e2b6e25c917fe05f5a6c835"},
{file = "uvicorn-0.30.4.tar.gz", hash = "sha256:00db9a9e3711a5fa59866e2b02fac69d8dc70ce0814aaec9a66d1d9e5c832a30"}, {file = "uvicorn-0.30.5.tar.gz", hash = "sha256:ac6fdbd4425c5fd17a9fe39daf4d4d075da6fdc80f653e5894cdc2fd98752bee"},
] ]
[[package]] [[package]]
name = "uvicorn" name = "uvicorn"
version = "0.30.4" version = "0.30.5"
extras = ["standard"] extras = ["standard"]
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The lightning-fast ASGI server." summary = "The lightning-fast ASGI server."
@ -2513,14 +2513,14 @@ dependencies = [
"httptools>=0.5.0", "httptools>=0.5.0",
"python-dotenv>=0.13", "python-dotenv>=0.13",
"pyyaml>=5.1", "pyyaml>=5.1",
"uvicorn==0.30.4", "uvicorn==0.30.5",
"uvloop!=0.15.0,!=0.15.1,>=0.14.0; (sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\"", "uvloop!=0.15.0,!=0.15.1,>=0.14.0; (sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\"",
"watchfiles>=0.13", "watchfiles>=0.13",
"websockets>=10.4", "websockets>=10.4",
] ]
files = [ files = [
{file = "uvicorn-0.30.4-py3-none-any.whl", hash = "sha256:06b00e3087e58c6865c284143c0c42f810b32ff4f265ab19d08c566f74a08728"}, {file = "uvicorn-0.30.5-py3-none-any.whl", hash = "sha256:b2d86de274726e9878188fa07576c9ceeff90a839e2b6e25c917fe05f5a6c835"},
{file = "uvicorn-0.30.4.tar.gz", hash = "sha256:00db9a9e3711a5fa59866e2b02fac69d8dc70ce0814aaec9a66d1d9e5c832a30"}, {file = "uvicorn-0.30.5.tar.gz", hash = "sha256:ac6fdbd4425c5fd17a9fe39daf4d4d075da6fdc80f653e5894cdc2fd98752bee"},
] ]
[[package]] [[package]]

View File

@ -21,7 +21,7 @@ from utils.log import logger
if TYPE_CHECKING: if TYPE_CHECKING:
from telegram import Update, Message from telegram import Update, Message
from telegram.ext import ContextTypes, Job from telegram.ext import ContextTypes, Job
from modules.apihelper.models.genshin.hyperion import LiveCode, LiveCodeHoYo from modules.apihelper.models.genshin.hyperion import LiveCode, LiveCodeHoYo, PostInfo
class PostCodeHandlerData: class PostCodeHandlerData:
@ -92,22 +92,14 @@ class PostCodeHandlerData:
SEND_POST, CHECK_COMMAND, GET_POST_CHANNEL = range(10900, 10903) SEND_POST, CHECK_COMMAND, GET_POST_CHANNEL = range(10900, 10903)
POST_TEMPLATE = """<b>《原神%s 版本前瞻特别节目兑换码</b> POST_TEMPLATE = """<b>《绝区零%s 版本前瞻特别节目兑换码</b>
国服 <code>%s</code> - 复色菲林 x300, 资深调查员记录 x2, 音擎能源模块 x3, 丁尼 x30000
<code>%s</code> - 原石 ×100精锻用魔矿 x10
<code>%s</code> - 原石 ×100大英雄的经验 x5
<code>%s</code> - 原石 ×100摩拉 x50000
国际服
<code>%s</code> - 原石 ×100精锻用魔矿 x10
<code>%s</code> - 原石 ×100大英雄的经验 x5
<code>%s</code> - 原石 ×100摩拉 x50000
兑换码过期时间 %s UTC+8请尽快领取""" 兑换码过期时间 %s UTC+8请尽快领取"""
UPDATE_TEMPLATE = """可能的兑换码发放时间: UPDATE_TEMPLATE = """可能的兑换码发放时间:
%s%s%s %s
更新可能延迟三到五分钟请耐心等待""" 更新可能延迟三到五分钟请耐心等待"""
@ -115,13 +107,13 @@ UPDATE_TEMPLATE = """可能的兑换码发放时间:
class PostCode(Plugin.Conversation): class PostCode(Plugin.Conversation):
"""版本前瞻特别节目兑换码推送""" """版本前瞻特别节目兑换码推送"""
MENU_KEYBOARD = ReplyKeyboardMarkup([["推送频道", "推送并且定时更新"], ["退出"]], True, True) MENU_KEYBOARD = ReplyKeyboardMarkup([["推送频道"], ["退出"]], True, True)
SUBJECT_RE = re.compile(r"一起来看《原神》(\d+\.\d+)版本前瞻特别节目吧!") SUBJECT_RE = re.compile(r"》(\d+\.\d+)版本.*?前瞻讨论活动开启")
ACT_RE = re.compile(r"act_id=(.*?)&") ACT_RE = re.compile(r"act_id=(.*?)&")
def __init__(self): def __init__(self):
self.gids = 2 self.gids = 8
self.type_id = 3 self.type_id = 2
@staticmethod @staticmethod
def get_bbs_client() -> Hyperion: def get_bbs_client() -> Hyperion:
@ -146,8 +138,8 @@ class PostCode(Plugin.Conversation):
return match[0], post return match[0], post
return None, None return None, None
def init_act_id(self, post: Dict) -> Optional[str]: def init_act_id(self, post: "PostInfo") -> Optional[str]:
structured_content = post.get("structured_content") structured_content = post["post"]["post"]["structured_content"]
if not structured_content: if not structured_content:
return None return None
structured_data = json.loads(structured_content) structured_data = json.loads(structured_content)
@ -169,17 +161,18 @@ class PostCode(Plugin.Conversation):
version, final_post = self.init_version(news.get("list", [])) version, final_post = self.init_version(news.get("list", []))
if not final_post: if not final_post:
raise ValueError("未找到版本前瞻特别节目文章") raise ValueError("未找到版本前瞻特别节目文章")
act_id = self.init_act_id(final_post) # final_post_info = await client.get_post_info(self.gids, final_post.get("post_id"))
if not act_id: # act_id = self.init_act_id(final_post_info)
raise ValueError("未找到文章中的 act_id") # if not act_id:
live_info = await client.get_live_info(act_id) # raise ValueError("未找到文章中的 act_id")
ver_code = live_info.code_ver # live_info = await client.get_live_info(act_id)
# ver_code = live_info.code_ver
post_code_handler_data.version = version post_code_handler_data.version = version
post_code_handler_data.act_id = act_id # post_code_handler_data.act_id = act_id
post_code_handler_data.ver_code = ver_code # post_code_handler_data.ver_code = ver_code
post_code_handler_data.mys_code = await client.get_live_code(act_id, ver_code) # post_code_handler_data.mys_code = await client.get_live_code(act_id, ver_code)
post_code_handler_data.hoyo_code = await client.get_live_code_hoyo(self.gids) post_code_handler_data.hoyo_code = await client.get_live_code_hoyo(self.gids)
if len(post_code_handler_data.mys_code) != 3: if len(post_code_handler_data.hoyo_code) != 1:
raise ValueError("获取兑换码数据成功,但是数量不对") raise ValueError("获取兑换码数据成功,但是数量不对")
return True return True
finally: finally:
@ -218,15 +211,15 @@ class PostCode(Plugin.Conversation):
return ConversationHandler.END return ConversationHandler.END
if message.text == "推送频道": if message.text == "推送频道":
return await self.get_channel(update, context) return await self.get_channel(update, context)
if message.text == "推送并且定时更新": # if message.text == "推送并且定时更新":
if not post_code_handler_data.real_need_update(): # if not post_code_handler_data.real_need_update():
await message.reply_text( # await message.reply_text(
"所有兑换码已发放,无需创建更新任务,将直接推送。", reply_markup=ReplyKeyboardRemove() # "所有兑换码已发放,无需创建更新任务,将直接推送。", reply_markup=ReplyKeyboardRemove()
) # )
return await self.get_channel(update, context) # return await self.get_channel(update, context)
post_code_handler_data.need_update = True # post_code_handler_data.need_update = True
await message.reply_text(post_code_handler_data.get_need_update_text()) # await message.reply_text(post_code_handler_data.get_need_update_text())
return await self.get_channel(update, context) # return await self.get_channel(update, context)
return ConversationHandler.END return ConversationHandler.END
async def get_channel(self, update: "Update", _: "ContextTypes.DEFAULT_TYPE") -> int: async def get_channel(self, update: "Update", _: "ContextTypes.DEFAULT_TYPE") -> int:
@ -279,7 +272,7 @@ class PostCode(Plugin.Conversation):
await message.reply_text("正在推送", reply_markup=ReplyKeyboardRemove()) await message.reply_text("正在推送", reply_markup=ReplyKeyboardRemove())
channel_id, channel_username = post_code_handler_data.channel_id, post_code_handler_data.channel_username channel_id, channel_username = post_code_handler_data.channel_id, post_code_handler_data.channel_username
post_text = post_code_handler_data.get_text() post_text = post_code_handler_data.get_text()
post_text += f"\n\n@{channel_username}" post_text += f"\n\n@{channel_username} #前瞻特别节目兑换码"
try: try:
msg = await context.bot.send_message(channel_id, post_text, parse_mode=ParseMode.HTML) msg = await context.bot.send_message(channel_id, post_text, parse_mode=ParseMode.HTML)
if post_code_handler_data.need_update: if post_code_handler_data.need_update:
@ -318,7 +311,7 @@ class PostCode(Plugin.Conversation):
post_code_handler_data.mys_code = mys_code post_code_handler_data.mys_code = mys_code
post_code_handler_data.hoyo_code = hoyo_code post_code_handler_data.hoyo_code = hoyo_code
post_text = post_code_handler_data.get_text() post_text = post_code_handler_data.get_text()
post_text += f"\n\n@{channel_username}" post_text += f"\n\n@{channel_username} #前瞻特别节目兑换码"
await post_code_handler_data.channel_msg.edit_text(post_text, parse_mode=ParseMode.HTML) await post_code_handler_data.channel_msg.edit_text(post_text, parse_mode=ParseMode.HTML)
logger.success("PostCode 兑换码发生变化,已更新频道消息") logger.success("PostCode 兑换码发生变化,已更新频道消息")
else: else:

View File

@ -19,7 +19,7 @@ asyncmy==0.2.9
attrs==23.2.0 attrs==23.2.0
backports-zoneinfo==0.2.1; python_version < "3.9" backports-zoneinfo==0.2.1; python_version < "3.9"
beautifulsoup4==4.12.3 beautifulsoup4==4.12.3
black==24.4.2 black==24.8.0
cachetools==5.3.3 cachetools==5.3.3
certifi==2024.7.4 certifi==2024.7.4
cffi==1.16.0; platform_python_implementation != "PyPy" cffi==1.16.0; platform_python_implementation != "PyPy"
@ -104,8 +104,8 @@ tzdata==2024.1; platform_system == "Windows"
tzlocal==5.2 tzlocal==5.2
ujson==5.10.0 ujson==5.10.0
urllib3==2.2.2 urllib3==2.2.2
uvicorn==0.30.4 uvicorn==0.30.5
uvicorn[standard]==0.30.4 uvicorn[standard]==0.30.5
uvloop==0.19.0; (sys_platform != "cygwin" and sys_platform != "win32") and platform_python_implementation != "PyPy" uvloop==0.19.0; (sys_platform != "cygwin" and sys_platform != "win32") and platform_python_implementation != "PyPy"
watchfiles==0.22.0 watchfiles==0.22.0
websockets==12.0 websockets==12.0