🔖 Update to v1.0.2

This commit is contained in:
xtaodada 2022-05-25 19:26:50 +08:00
parent 7767845b64
commit fade059e80
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
8 changed files with 98 additions and 48 deletions

View File

@ -9,7 +9,7 @@ import pyromod.listen
from pyrogram import Client
import sys
pgm_version = "1.0.1"
pgm_version = "1.0.2"
CMD_LIST = {}
module_dir = __path__[0]
working_dir = getcwd()
@ -17,9 +17,8 @@ working_dir = getcwd()
read_context = {}
help_messages = {}
all_permissions = []
scheduler = AsyncIOScheduler()
scheduler = AsyncIOScheduler(timezone="Asia/ShangHai")
if not scheduler.running:
scheduler.configure(timezone="Asia/ShangHai")
scheduler.start()
logs = getLogger(__name__)
logging_format = "%(levelname)s [%(asctime)s] [%(name)s] %(message)s"
@ -40,7 +39,12 @@ elif not Config.API_HASH:
sys.exit(1)
start_time = datetime.utcnow()
bot = Client("pagermaid", api_id=Config.API_ID, api_hash=Config.API_HASH, ipv6=Config.IPV6, proxy=Config.PROXY)
bot = Client("pagermaid",
session_string=Config.STRING_SESSION,
api_id=Config.API_ID,
api_hash=Config.API_HASH,
ipv6=Config.IPV6,
proxy=Config.PROXY)
async def log(message):

View File

@ -38,8 +38,6 @@ def listener(**args):
is_plugin = args.get('is_plugin', True)
incoming = args.get('incoming', False)
outgoing = args.get('outgoing', True)
owners_only = args.get("owners_only", False)
admins_only = args.get("admins_only", False)
groups_only = args.get("groups_only", False)
privates_only = args.get("privates_only", False)

View File

@ -87,27 +87,12 @@ async def profile(client: Client, message: Message):
parameters="(username/uid/reply)")
async def block_user(client: Client, message: Message):
""" Block a user. """
current_chat = message.chat
if len(message.parameter) > 1:
await message.edit(f"{lang('error_prefix')}{lang('arg_error')}")
return
if not Config.SILENT:
await message.edit(lang('block_process'))
user = None
# Priority: reply > argument > current_chat
if message.reply_to_message: # Reply to a user
user = message.reply_to_message.from_user
if user:
user = user.id
if not user and len(message.parameter) == 1: # Argument provided
(raw_user,) = message.parameter
if raw_user.isnumeric():
user = int(raw_user)
elif message.entities is not None:
if message.entities[0].type == "text_mention":
user = message.entities[0].user.id
if not user and current_chat.type == "private": # Current chat
user = current_chat.id
user = message.obtain_user()
if not user:
return await message.edit(f"{lang('error_prefix')}{lang('arg_error')}")
try:
@ -129,20 +114,7 @@ async def unblock_user(client: Client, message: Message):
return
if not Config.SILENT:
await message.edit(lang('unblock_process'))
user = None
if message.reply_to_message: # Reply to a user
user = message.reply_to_message.from_user
if user:
user = user.id
if not user and len(message.parameter) == 1: # Argument provided
(raw_user,) = message.parameter
if raw_user.isnumeric():
user = int(raw_user)
elif message.entities is not None:
if message.entities[0].type == "text_mention":
user = message.entities[0].user.id
if not user and message.chat.type == "private": # Current chat
user = message.chat.id
user = message.obtain_user()
if not user:
return await message.edit(f"{lang('error_prefix')}{lang('arg_error')}")
try:

View File

@ -1,6 +1,6 @@
from os import sep, remove, mkdir
from os.path import exists
from typing import List
from typing import List, Optional
from pyrogram.types import Message
from sqlitedict import SqliteDict
@ -29,12 +29,13 @@ class Message(Message): # noqa
arguments: str
parameter: List
async def safe_delete(self, revoke: bool = True):
try:
return await self._client.delete_messages(
chat_id=self.chat.id,
message_ids=self.id,
revoke=revoke
)
except Exception as e: # noqa
return False
def obtain_message(self) -> Optional[str]:
""" Obtains a message from either the reply message or command arguments. """
return
def obtain_user(self) -> Optional[int]:
""" Obtains a user from either the reply message or command arguments. """
return
async def safe_delete(self, revoke: bool = True) -> None:
return

View File

@ -18,4 +18,4 @@ You should have received a copy of the GNU General Public License
along with pyromod. If not, see <https://www.gnu.org/licenses/>.
"""
from .listen import Client, MessageHandler, Chat, User
from .listen import Client, MessageHandler, Chat, User

View File

@ -160,6 +160,31 @@ class Message(pyrogram.types.Message):
except Exception as e: # noqa
return False
@patchable
def obtain_message(self) -> Optional[str]:
""" Obtains a message from either the reply message or command arguments. """
return self.arguments if self.arguments else (self.reply_to_message.text if self.reply_to_message else None)
@patchable
def obtain_user(self) -> Optional[int]:
""" Obtains a user from either the reply message or command arguments. """
user = None
# Priority: reply > argument > current_chat
if self.reply_to_message: # Reply to a user
user = self.reply_to_message.from_user
if user:
user = user.id
if not user and len(self.parameter) == 1: # Argument provided
(raw_user,) = self.parameter
if raw_user.isnumeric():
user = int(raw_user)
elif self.entities is not None:
if self.entities[0].type == pyrogram.enums.MessageEntityType.TEXT_MENTION:
user = self.entities[0].user.id
if not user and self.chat.type == pyrogram.enums.ChatType.PRIVATE: # Current chat
user = self.chat.id
return user
@patchable
async def edit_text(
self,

50
utils/gensession.py Normal file
View File

@ -0,0 +1,50 @@
import asyncio
import os
from sys import executable, exit
try:
from pyrogram.errors import ApiIdInvalid, PhoneNumberInvalid
from pyrogram import Client
print("Found an existing installation of Pyrogram...\nSuccessfully Imported.")
except ImportError:
print("Installing Pyrogram...")
os.system(f"{executable} -m pip install pyrogram")
print("Done. Installed and imported pyrogram.")
from pyrogram.errors import ApiIdInvalid, PhoneNumberInvalid
from pyrogram import Client
async def main():
API_ID = 0
try:
API_ID = int(input("Please enter your API ID: "))
except ValueError:
print("APP ID must be an integer.\nQuitting...")
exit(0)
except Exception as e:
raise e
API_HASH = input("Please enter your API HASH: ")
try:
async with Client("pagermaid", API_ID, API_HASH) as bot:
print("Generating a user session...")
await bot.send_message(
"me",
f"**PagerMaid** `String SESSION`:\n\n`{await bot.export_session_string()}`",
)
print("Your SESSION has been generated. Check your telegram saved messages!")
exit(0)
except ApiIdInvalid:
print("Your API ID/API HASH combination is invalid. Kindly recheck.\nQuitting...")
exit(0)
except ValueError:
print("API HASH must not be empty!\nQuitting...")
exit(0)
except PhoneNumberInvalid:
print("The phone number is invalid!\nQuitting...")
exit(0)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())

View File

@ -252,7 +252,7 @@ debian_require_install() {
download_repo() {
echo "下载 repository 中 . . ."
rm -rf /var/lib/pagermaid >>/dev/null 2>&1
git clone https://gitlab.com/Xtao-Labs/pagermaid-modify.git /var/lib/pagermaid >>/dev/null 2>&1
git clone https://github.com/TeamPGM/PagerMaid-Pyro.git /var/lib/pagermaid >>/dev/null 2>&1
cd /var/lib/pagermaid >>/dev/null 2>&1
echo "Hello World!" >/var/lib/pagermaid/public.lock
}