From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_DNS_FOR_FROM,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from localhost.localdomain (unknown [101.128.125.57]) by gnuweeb.org (Postfix) with ESMTPSA id 1A18A7E7BE; Tue, 19 Jul 2022 00:18:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1658189896; bh=+3of2uenUpuSPC0F/KOYt7DpYpXcsM965it6qWlkXf4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aJTQXX0BvSUfg0/wS1usxU/RnfErNlfF41JUBw7B0W+XaI2hkjcgT1DbindH1u2mR +356UwTkBjHt2H4tkLkYdJAG9HoE5jyKUAZOwzPttTjmCZIWjladtxSTKmVguBSd3O rkhnplJor810DNoVswUw55rhMioMy4eM0T4L7VwswCCK7aW0VuUBoDACYCnhca8YLD /DJVkHUwciRI1tR42YvL4QdU8DZnRgaqro51M83M0uP1TglOE5WYcJ76A90CpN6lFu tR2veFkG0G72wcchZxyaxl6vzeExdXwgVyxqVQ1KHUyV9IHjfa5TI5cDdI2ZYaPMtR kQwzXiTLuHrDQ== From: Muhammad Rizki To: Ammar Faizi Cc: Muhammad Rizki , GNU/Weeb Mailing List Subject: [PATCH v2 07/18] Re-design send email message to Telegram Date: Tue, 19 Jul 2022 07:17:33 +0700 Message-Id: <20220719001744.1950-8-kiizuha@gnuweeb.org> X-Mailer: git-send-email 2.34.1.windows.1 In-Reply-To: <20220719001744.1950-1-kiizuha@gnuweeb.org> References: <20220719001744.1950-1-kiizuha@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: From: Muhammad Rizki We want to separate send message function and inherit with the Pyrogram Client, so it should makes the code clean and clear. Signed-off-by: Muhammad Rizki --- daemon/packages/__init__.py | 1 + daemon/packages/client.py | 59 +++++++++++++++++++++++++++++++++++++ daemon/run.py | 4 +-- daemon/scraper/bot.py | 35 ++++++---------------- 4 files changed, 71 insertions(+), 28 deletions(-) create mode 100644 daemon/packages/__init__.py create mode 100644 daemon/packages/client.py diff --git a/daemon/packages/__init__.py b/daemon/packages/__init__.py new file mode 100644 index 0000000..efef9ae --- /dev/null +++ b/daemon/packages/__init__.py @@ -0,0 +1 @@ +from .client import DaemonClient diff --git a/daemon/packages/client.py b/daemon/packages/client.py new file mode 100644 index 0000000..fd5b5ec --- /dev/null +++ b/daemon/packages/client.py @@ -0,0 +1,59 @@ +from pyrogram import Client +from pyrogram.enums import ParseMode +from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton +from typing import Union, BinaryIO + + +class DaemonClient(Client): + def __init__(self, name: str, api_id: int, + api_hash: str, **kwargs): + super().__init__(name, api_id, + api_hash, **kwargs) + + + async def send_text_email( + self, + chat_id: Union[int, str], + text: str, + reply_to: int, + url: str = None, + parse_mode: ParseMode = ParseMode.HTML + ) -> Message: + print("[send_text_email]") + return await self.send_message( + chat_id=chat_id, + text=text, + reply_to_message_id=reply_to, + parse_mode=parse_mode, + reply_markup=InlineKeyboardMarkup([ + [InlineKeyboardButton( + "See the full message", + url=url + )] + ]) + ) + + + async def send_patch_email( + self, + chat_id: Union[int, str], + doc: Union[str, BinaryIO], + caption: str, + reply_to: int, + url: str = None, + parse_mode: ParseMode = ParseMode.HTML + ) -> Message: + print("[send_patch_email]") + return await self.send_document( + chat_id=chat_id, + document=doc, + caption=caption, + reply_to_message_id=reply_to, + parse_mode=parse_mode, + reply_markup=InlineKeyboardMarkup([ + [InlineKeyboardButton( + "See the full message", + url=url + )] + ]) + ) diff --git a/daemon/run.py b/daemon/run.py index 83b2cdb..1151ccd 100644 --- a/daemon/run.py +++ b/daemon/run.py @@ -8,7 +8,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from scraper import BotMutexes from dotenv import load_dotenv from mysql import connector -from pyrogram import Client +from packages import DaemonClient from scraper import Scraper from scraper import Bot import os @@ -17,7 +17,7 @@ import os def main(): load_dotenv() - client = Client( + client = DaemonClient( "storage/EmailScraper", api_id=int(os.getenv("API_ID")), api_hash=os.getenv("API_HASH"), diff --git a/daemon/scraper/bot.py b/daemon/scraper/bot.py index 2392b61..93e633a 100644 --- a/daemon/scraper/bot.py +++ b/daemon/scraper/bot.py @@ -8,7 +8,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from pyrogram.types import InlineKeyboardMarkup from pyrogram.types import InlineKeyboardButton from slugify import slugify -from pyrogram import Client +from packages import DaemonClient from scraper import Scraper from pyrogram import enums from . import utils @@ -32,12 +32,11 @@ class Bot(): ] TG_CHAT_IDS = [ - -1001394203410, - -1001673279485, + "kiizuah" ] - def __init__(self, client: Client, sched: AsyncIOScheduler, + def __init__(self, client: DaemonClient, sched: AsyncIOScheduler, scraper: Scraper, mutexes: BotMutexes, conn): self.client = client self.sched = sched @@ -123,8 +122,8 @@ class Bot(): reply_to, text, url) else: text = "#ml\n" + text - m = await self.__send_text_msg(tg_chat_id, reply_to, - text, url) + m = await self.__send_text_msg(tg_chat_id, text, + reply_to, url) self.db.insert_telegram(email_id, m.chat.id, m.id) for d, f in files: @@ -161,10 +160,10 @@ class Bot(): async def __send_patch_msg(self, mail, tg_chat_id, reply_to, text, url): print("[__send_patch_msg]") - tmp, fnm, caption, url = Bot.prepare_send_patch(mail, text, url) + tmp, doc, caption, url = Bot.prepare_send_patch(mail, text, url) ret = await self.__handle_telegram_floodwait( - self.____send_patch_msg, - *[tg_chat_id, reply_to, fnm, caption, url] + self.client.send_patch_email, + *[tg_chat_id, doc, caption, reply_to, url] ) Bot.clean_up_after_send_patch(tmp) return ret @@ -207,7 +206,7 @@ class Bot(): async def __send_text_msg(self, *args): return await self.__handle_telegram_floodwait( - self.____send_text_msg, + self.client.send_text_email, *args ) @@ -251,19 +250,3 @@ class Bot(): )] ]) ) - - - async def ____send_text_msg(self, tg_chat_id, reply_to, text, url): - print("[__send_text_msg]") - return await self.client.send_message( - tg_chat_id, - text, - reply_to_message_id=reply_to, - parse_mode=enums.ParseMode.HTML, - reply_markup=InlineKeyboardMarkup([ - [InlineKeyboardButton( - "See the full message", - url=url - )] - ]) - ) -- Muhammad Rizki