🔖 Update to v1.2.22

This commit is contained in:
xtaodada 2023-01-09 20:50:29 +08:00
parent 0a4dda08ab
commit eccf9b13c0
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
5 changed files with 69 additions and 17 deletions

View File

@ -13,9 +13,9 @@ from pagermaid.scheduler import scheduler
import pyromod.listen import pyromod.listen
from pyrogram import Client from pyrogram import Client
from pyromod.listen.temp_fix import temp_fix from pyromod.listen.temp_fix import temp_fix, read_chat_history
pgm_version = "1.2.21" pgm_version = "1.2.22"
CMD_LIST = {} CMD_LIST = {}
module_dir = __path__[0] module_dir = __path__[0]
working_dir = getcwd() working_dir = getcwd()
@ -69,6 +69,7 @@ bot = Client(
# temp fix topics group # temp fix topics group
setattr(pyrogram.types.Message, "old_parse", getattr(pyrogram.types.Message, "_parse")) setattr(pyrogram.types.Message, "old_parse", getattr(pyrogram.types.Message, "_parse"))
setattr(pyrogram.types.Message, "_parse", temp_fix) setattr(pyrogram.types.Message, "_parse", temp_fix)
pyrogram.Client.read_chat_history = read_chat_history
bot.job = scheduler bot.job = scheduler

View File

@ -21,9 +21,12 @@ async def prune(client: Client, message: Message):
input_chat = message.chat.id input_chat = message.chat.id
messages = [] messages = []
count = 0 count = 0
async for msg in client.get_chat_history( limit = message.id - message.reply_to_message.id + 1
input_chat, if message.reply_to_top_message_id:
limit=message.id - message.reply_to_message.id + 1): func = client.get_discussion_replies(input_chat, message.reply_to_top_message_id, limit=limit)
else:
func = client.get_chat_history(input_chat, limit=limit)
async for msg in func:
if msg.id < message.reply_to_message.id: if msg.id < message.reply_to_message.id:
break break
messages.append(msg.id) messages.append(msg.id)

View File

@ -178,13 +178,13 @@ def get_uptime():
minutes, seconds = divmod(remainder, 60) minutes, seconds = divmod(remainder, 60)
days, hours = divmod(hours, 24) days, hours = divmod(hours, 24)
def includeS(text: str, num: int): def include_s(text: str, num: int):
return f"{num} {text}{'' if num == 1 else 's'}" return f"{num} {text}{'' if num == 1 else 's'}"
d = includeS("day", days) d = include_s("day", days)
h = includeS("hour", hours) h = include_s("hour", hours)
m = includeS("minute", minutes) m = include_s("minute", minutes)
s = includeS("second", seconds) s = include_s("second", seconds)
if days: if days:
output = f"{d}, {h}, {m} and {s}" output = f"{d}, {h}, {m} and {s}"

View File

@ -1,13 +1,17 @@
import contextlib
from typing import Union
import pyrogram import pyrogram
from pyrogram.errors import BadRequest
async def temp_fix( async def temp_fix(
client: "pyrogram.Client", client: "pyrogram.Client",
message: pyrogram.raw.base.Message, message: pyrogram.raw.base.Message,
users: dict, users: dict,
chats: dict, chats: dict,
is_scheduled: bool = False, is_scheduled: bool = False,
replies: int = 1 replies: int = 1
): ):
parsed = await pyrogram.types.Message.old_parse(client, message, users, chats, is_scheduled, replies) # noqa parsed = await pyrogram.types.Message.old_parse(client, message, users, chats, is_scheduled, replies) # noqa
if isinstance(message, pyrogram.raw.types.Message) and message.reply_to \ if isinstance(message, pyrogram.raw.types.Message) and message.reply_to \
@ -17,3 +21,47 @@ async def temp_fix(
parsed.reply_to_message_id = None parsed.reply_to_message_id = None
parsed.reply_to_message = None parsed.reply_to_message = None
return parsed return parsed
async def read_chat_history(
self: "pyrogram.Client",
chat_id: Union[int, str],
max_id: int = 0
) -> bool:
peer = await self.resolve_peer(chat_id)
if isinstance(peer, pyrogram.raw.types.InputPeerChannel):
q = pyrogram.raw.functions.channels.ReadHistory(
channel=peer,
max_id=max_id
)
else:
q = pyrogram.raw.functions.messages.ReadHistory(
peer=peer,
max_id=max_id
)
await self.invoke(q)
if isinstance(peer, pyrogram.raw.types.InputPeerChannel):
with contextlib.suppress(BadRequest):
topics: pyrogram.raw.types.messages.ForumTopics = await self.invoke(
pyrogram.raw.functions.channels.GetForumTopics(
channel=peer,
offset_date=0,
offset_id=0,
offset_topic=0,
limit=0
)
)
for i in topics.topics:
await self.invoke(
pyrogram.raw.functions.messages.ReadDiscussion(
peer=peer,
msg_id=i.id,
read_max_id=i.read_inbox_max_id + i.unread_count,
)
)
return True

View File

@ -1,4 +1,4 @@
pyrogram==2.0.93 pyrogram==2.0.95
TgCrypto==1.2.5 TgCrypto==1.2.5
Pillow>=8.4.0 Pillow>=8.4.0
pytz>=2021.3 pytz>=2021.3