mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-23 00:12:31 +00:00
85 lines
3.0 KiB
Python
85 lines
3.0 KiB
Python
|
""" PagerMaid module that 鲁小迅 报时 """
|
||
|
|
||
|
from datetime import datetime
|
||
|
from typing import Optional
|
||
|
|
||
|
from pyrogram import Client
|
||
|
from pyrogram.enums.parse_mode import ParseMode
|
||
|
from pyrogram.raw.functions.messages import GetStickerSet
|
||
|
from pyrogram.raw.types import InputStickerSetShortName
|
||
|
from pyrogram.raw.types.messages import StickerSet
|
||
|
from pyrogram.types import Document
|
||
|
|
||
|
from pagermaid.hook import Hook
|
||
|
from pagermaid.listener import listener
|
||
|
from pagermaid.enums import Message
|
||
|
from pagermaid.scheduler import add_delete_message_job
|
||
|
from pagermaid.services import bot, scheduler
|
||
|
from pagermaid.utils import edit_delete, check_manage_subs
|
||
|
from pagermaid.sub_utils import Sub
|
||
|
|
||
|
lu_xiao_xun_bs_sub = Sub("luxiaoxunbs")
|
||
|
lu_xiao_xun_sticker: Optional[StickerSet] = None
|
||
|
|
||
|
|
||
|
@Hook.on_startup()
|
||
|
async def load_bs_sticker():
|
||
|
global lu_xiao_xun_sticker
|
||
|
try:
|
||
|
lu_xiao_xun_sticker = await bot.invoke(GetStickerSet(
|
||
|
stickerset=InputStickerSetShortName(short_name="luxiaoxunbs"),
|
||
|
hash=0
|
||
|
))
|
||
|
except Exception:
|
||
|
lu_xiao_xun_sticker = None
|
||
|
|
||
|
|
||
|
async def get_bs_sticker():
|
||
|
if not lu_xiao_xun_sticker:
|
||
|
await load_bs_sticker()
|
||
|
if not lu_xiao_xun_sticker:
|
||
|
return None
|
||
|
now = datetime.now()
|
||
|
hour = now.hour - 1
|
||
|
if now.minute > 30:
|
||
|
hour += 1
|
||
|
hour %= 12
|
||
|
if hour == -1:
|
||
|
hour = 11
|
||
|
return Document._parse(bot, lu_xiao_xun_sticker.documents[hour % 12], "sticker.webp") # noqa
|
||
|
|
||
|
|
||
|
@scheduler.scheduled_job("cron", minute="0", id="lu_xiao_xun_bs.push")
|
||
|
async def lu_xiao_xun_bs_subscribe() -> None:
|
||
|
sticker = await get_bs_sticker()
|
||
|
if not sticker:
|
||
|
return
|
||
|
for gid in lu_xiao_xun_bs_sub.get_subs():
|
||
|
try:
|
||
|
msg = await bot.send_document(gid, sticker.file_id)
|
||
|
add_delete_message_job(msg, delete_seconds=3600)
|
||
|
except Exception:
|
||
|
lu_xiao_xun_bs_sub.del_id(gid)
|
||
|
|
||
|
|
||
|
@listener(command="luxiaoxunbs",
|
||
|
parameters="订阅/退订",
|
||
|
description="整点报时,每小时定时发送,自动删除上一条消息")
|
||
|
async def lu_xiao_xun_bs(_: Client, message: Message):
|
||
|
if not message.arguments:
|
||
|
return await message.edit("请输入订阅/退订")
|
||
|
if not check_manage_subs(message):
|
||
|
return await edit_delete(message, "❌ 权限不足,无法操作整点报时", parse_mode=ParseMode.HTML)
|
||
|
if message.arguments == "订阅":
|
||
|
if lu_xiao_xun_bs_sub.check_id(message.chat.id):
|
||
|
return await edit_delete(message, "❌ 你已经订阅了整点报时", parse_mode=ParseMode.HTML)
|
||
|
lu_xiao_xun_bs_sub.add_id(message.chat.id)
|
||
|
await message.edit("你已经成功订阅了整点报时")
|
||
|
elif message.arguments == "退订":
|
||
|
if not lu_xiao_xun_bs_sub.check_id(message.chat.id):
|
||
|
return await edit_delete(message, "❌ 你还没有订阅整点报时", parse_mode=ParseMode.HTML)
|
||
|
lu_xiao_xun_bs_sub.del_id(message.chat.id)
|
||
|
await message.edit("你已经成功退订了整点报时")
|
||
|
else:
|
||
|
return await message.edit("请输入订阅/退订")
|