diff --git a/.gitignore b/.gitignore index 7e636e0bd..c1bd384b1 100644 --- a/.gitignore +++ b/.gitignore @@ -134,17 +134,14 @@ dmypy.json .heroku/ .profile.d/ vendor/ -config.ini config.env .vscode/ .idea/ *.session -log.txt unknown_errors.txt logs/ bin/ resources/base_profile_pic.jpg resources/mdfy_profile_pic.jpg -pictest.py resources/MutantAcademyBB.ttf userge/plugins/dev/ \ No newline at end of file diff --git a/Aptfile b/Aptfile index 21753e284..fd027cd87 100644 --- a/Aptfile +++ b/Aptfile @@ -1,4 +1,3 @@ tree wget2 -pv p7zip-full diff --git a/README.md b/README.md index 75650fd2f..2e1d51d5c 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ # Userge 🔥 [![Build Status](https://travis-ci.com/UsergeTeam/Userge.svg?branch=alpha)](https://travis-ci.com/UsergeTeam/Userge) -![Python Version](https://img.shields.io/badge/python-3.8-lightgrey) +![Python Version](https://img.shields.io/badge/python-3.8/3.9-lightgrey) ![Release](https://img.shields.io/github/v/release/UsergeTeam/Userge) ![Stars](https://img.shields.io/github/stars/UsergeTeam/Userge) ![Forks](https://img.shields.io/github/forks/UsergeTeam/Userge) diff --git a/app.json b/app.json index 508b58b06..5f090b039 100644 --- a/app.json +++ b/app.json @@ -17,7 +17,7 @@ "DATABASE_URL": {"description": "Mongodb url from https://cloud.mongodb.com/"}, "LOG_CHANNEL_ID": {"description": "Telegram Log Channel ID"}, "HU_STRING_SESSION": { - "description": "[USER MODE] - Get this using '@genStr_Bot' or `bash genStr`", + "description": "[USER MODE] - Get this using `bash genStr`", "required": false}, "BOT_TOKEN": { "description": "[BOT MODE] - Get this from https://t.me/botfather", diff --git a/init/logbot/core/api.sh b/init/logbot/core/api.sh index 2179ac2ab..4474c7bcf 100644 --- a/init/logbot/core/api.sh +++ b/init/logbot/core/api.sh @@ -9,7 +9,7 @@ # All rights reserved. declare -r _api_url="https://api.telegram.org/bot" -declare -i _mid=0 +declare -i _mid=0 _isChecked=0 declare -a _allMessages=() _getResponse() { @@ -22,6 +22,14 @@ _getResponse() { local ok=$(echo $rawUpdate | jq .ok) test -z $ok && return 1 if test $ok = true; then + if test $_isChecked -eq 0; then + local chatType=$(echo $rawUpdate | jq .result.chat.type) + [[ $chatType == \"supergroup\" || $chatType == \"channel\" ]] || \ + quit "invalid log chat type ! [$chatType]" + local chatUsername=$(echo $rawUpdate | jq .result.chat.username) + test $chatUsername != null && quit "log chat should be private !" + _isChecked=1 + fi if test $parse = true; then local msg="msg$_mid" Message $msg diff --git a/init/utils.sh b/init/utils.sh index eaef54f81..e6f87cdb8 100644 --- a/init/utils.sh +++ b/init/utils.sh @@ -12,17 +12,16 @@ declare -r minPVer=8 declare -r maxPVer=9 getPythonVersion() { - local -i count - local tmp found - [[ $DYNO ]] && count=$maxPVer || count=$minPVer + local -i count=$minPVer + local found while true; do - tmp=$(python3.$count -V 2> /dev/null) - found=$(grep "^Python 3." <<< "$tmp") - [[ -n $found ]] && break + found=$(python3.$count -c "print('hi')" 2> /dev/null) + test "$found" && break count+=1 [[ $count -gt $maxPVer ]] && break done - declare -gr pVer=$(sed -E 's/Python (3\.[0-9]{1,2}\.[0-9]{1,2}).*/\1/g' <<< "$tmp") + declare -gr pVer=$(sed -E 's/Python (3\.[0-9]{1,2}\.[0-9]{1,2}).*/\1/g' <<< \ + "$(python3.$count -V 2> /dev/null)") } log() { diff --git a/userge/core/types/new/channel_logger.py b/userge/core/types/new/channel_logger.py index c3e5f5747..4f09b7457 100644 --- a/userge/core/types/new/channel_logger.py +++ b/userge/core/types/new/channel_logger.py @@ -13,6 +13,7 @@ import asyncio from typing import Optional, Union +from pyrogram.errors import ChatWriteForbidden from pyrogram.types import Message as RawMessage from pyrogram.errors.exceptions import MessageTooLong @@ -183,7 +184,6 @@ async def forward_stored(self, message = await client.get_messages(chat_id=self._id, message_ids=message_id) caption = '' - file_id = None if message.caption: caption = message.caption.html.split('\n\n', maxsplit=1)[-1] elif message.text: @@ -197,20 +197,23 @@ async def forward_stored(self, caption = caption.format_map(SafeDict(**u_dict)) file_id = get_file_id_of_media(message) caption, buttons = parse_buttons(caption) - if message.media and file_id: - msg = await client.send_cached_media( - chat_id=chat_id, - file_id=file_id, - caption=caption, - reply_to_message_id=reply_to_message_id, - reply_markup=buttons if client.is_bot and buttons else None) - else: - msg = await client.send_message( - chat_id=chat_id, - text=caption, - reply_to_message_id=reply_to_message_id, - disable_web_page_preview=True, - reply_markup=buttons if client.is_bot and buttons else None) - if del_in and msg: - await asyncio.sleep(del_in) - await msg.delete() + try: + if message.media and file_id: + msg = await client.send_cached_media( + chat_id=chat_id, + file_id=file_id, + caption=caption, + reply_to_message_id=reply_to_message_id, + reply_markup=buttons if client.is_bot and buttons else None) + else: + msg = await client.send_message( + chat_id=chat_id, + text=caption, + reply_to_message_id=reply_to_message_id, + disable_web_page_preview=True, + reply_markup=buttons if client.is_bot and buttons else None) + if del_in and msg: + await asyncio.sleep(del_in) + await msg.delete() + except ChatWriteForbidden: + pass diff --git a/userge/plugins/admin/gadmin.py b/userge/plugins/admin/gadmin.py index fda41922e..154dcf7dd 100644 --- a/userge/plugins/admin/gadmin.py +++ b/userge/plugins/admin/gadmin.py @@ -33,7 +33,6 @@ allow_channels=False, check_promote_perm=True) async def promote_usr(message: Message): """ promote members in tg group """ - custom_rank = "" chat_id = message.chat.id await message.edit("`Trying to Promote User.. Hang on!! ⏳`") user_id, custom_rank = message.extract_user_and_text @@ -129,7 +128,6 @@ async def demote_usr(message: Message): async def ban_user(message: Message): """ ban user from tg group """ await message.edit("`Trying to Ban User.. Hang on!! ⏳`") - reason = "" user_id, reason = message.extract_user_and_text if not user_id: await message.edit( @@ -262,7 +260,6 @@ async def kick_usr(message: Message): allow_channels=False, check_restrict_perm=True) async def mute_usr(message: Message): """ mute user from tg group """ - reason = "" chat_id = message.chat.id flags = message.flags minutes = flags.get('-m', 0) diff --git a/userge/plugins/misc/download.py b/userge/plugins/misc/download.py index d2054ffa1..9bf0cac3b 100644 --- a/userge/plugins/misc/download.py +++ b/userge/plugins/misc/download.py @@ -91,9 +91,9 @@ async def url_download(message: Message, url: str) -> Tuple[str, int]: progress_str = progress_str.format( "trying to download", ''.join((Config.FINISHED_PROGRESS_STR - for i in range(math.floor(percentage / 5)))), + for _ in range(math.floor(percentage / 5)))), ''.join((Config.UNFINISHED_PROGRESS_STR - for i in range(20 - math.floor(percentage / 5)))), + for _ in range(20 - math.floor(percentage / 5)))), round(percentage, 2), url, custom_file_name, diff --git a/userge/plugins/misc/gdrive.py b/userge/plugins/misc/gdrive.py index dd8e31b7c..2940c0001 100644 --- a/userge/plugins/misc/gdrive.py +++ b/userge/plugins/misc/gdrive.py @@ -253,9 +253,9 @@ def _upload_file(self, file_path: str, parent_id: str) -> str: "**ETA** : `{}`" self._progress = tmp.format( "".join((Config.FINISHED_PROGRESS_STR - for i in range(math.floor(percentage / 5)))), + for _ in range(math.floor(percentage / 5)))), "".join((Config.UNFINISHED_PROGRESS_STR - for i in range(20 - math.floor(percentage / 5)))), + for _ in range(20 - math.floor(percentage / 5)))), round(percentage, 2), file_name, humanbytes(f_size), @@ -350,9 +350,9 @@ def _download_file(self, path: str, name: str, **kwargs) -> None: "**ETA** : `{}`" self._progress = tmp.format( "".join((Config.FINISHED_PROGRESS_STR - for i in range(math.floor(percentage / 5)))), + for _ in range(math.floor(percentage / 5)))), "".join((Config.UNFINISHED_PROGRESS_STR - for i in range(20 - math.floor(percentage / 5)))), + for _ in range(20 - math.floor(percentage / 5)))), round(percentage, 2), name, humanbytes(f_size), @@ -441,9 +441,9 @@ def _copy_file(self, file_id: str, parent_id: str) -> str: "**Completed** : `{}/{}`" self._progress = tmp.format( "".join((Config.FINISHED_PROGRESS_STR - for i in range(math.floor(percentage / 5)))), + for _ in range(math.floor(percentage / 5)))), "".join((Config.UNFINISHED_PROGRESS_STR - for i in range(20 - math.floor(percentage / 5)))), + for _ in range(20 - math.floor(percentage / 5)))), round(percentage, 2), self._completed, self._list) diff --git a/userge/plugins/utils/pmpermit.py b/userge/plugins/utils/pmpermit.py index 96149eff8..ab86339ce 100644 --- a/userge/plugins/utils/pmpermit.py +++ b/userge/plugins/utils/pmpermit.py @@ -276,7 +276,7 @@ async def uninvitedPmHandler(message: Message): message.chat.id, query_id=k.query_id, result_id=k.results[2].id, hide_via=True ) - except BotInlineDisabled: + except (IndexError, BotInlineDisabled): await message.reply( noPmMessage.format_map(SafeDict(**user_dict)) + '\n`- Protected by userge`') else: