✨🐛➕ Use aiohttp to accelerate network requests and Support silent mode and fix some bugs. (#148)
* 使用 aiohttp 加速网络请求 * 支持静默模式防止污染操作记录 * 批量修复错误
This commit is contained in:
parent
21a5ce0d6f
commit
849a0217b9
4
.github/ISSUE_TEMPLATE/bug_report_en.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report_en.md
vendored
@ -4,7 +4,7 @@ about: Submit discovered bugs
|
||||
---
|
||||
|
||||
<!--
|
||||
Please ensure you have read [wiki](https://github.com/xtaodada/PagerMaid-Modify/wiki), and provide all the information required by this template.
|
||||
Please ensure you have read [wiki](https://github.com/Xtao-Labs/PagerMaid-Modify/wiki), and provide all the information required by this template.
|
||||
Otherwise the issue will be closed immediately.Please do not repeat the issue.
|
||||
-->
|
||||
|
||||
@ -17,7 +17,7 @@ Otherwise the issue will be closed immediately.Please do not repeat the issue.
|
||||
### Additional info (logs errors etc)
|
||||
|
||||
<!--
|
||||
Please ensure you have deployed the [master branch](https://github.com/xtaodada/PagerMaid-Modify/tree/master)
|
||||
Please ensure you have deployed the [master branch](https://github.com/Xtao-Labs/PagerMaid-Modify/tree/master)
|
||||
|
||||
generated by github-issue-template.This issue is in English.
|
||||
-->
|
||||
|
4
.github/ISSUE_TEMPLATE/bug_report_zh.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report_zh.md
vendored
@ -4,7 +4,7 @@ about: 早起的虫子被你抓
|
||||
---
|
||||
|
||||
<!--
|
||||
请确保已阅读 [文档](https://github.com/xtaodada/PagerMaid-Modify/wiki) 内相关部分,并按照模版提供信息
|
||||
请确保已阅读 [文档](https://github.com/Xtao-Labs/PagerMaid-Modify/wiki) 内相关部分,并按照模版提供信息
|
||||
否则 issue 将被立即关闭,请勿重复提issue
|
||||
-->
|
||||
|
||||
@ -17,7 +17,7 @@ about: 早起的虫子被你抓
|
||||
### 额外信息(日志、报错等)
|
||||
|
||||
<!--
|
||||
请确保您部署的是[主线 master 分支](https://github.com/xtaodada/PagerMaid-Modify/tree/master)的最新版
|
||||
请确保您部署的是[主线 master 分支](https://github.com/Xtao-Labs/PagerMaid-Modify/tree/master)的最新版
|
||||
|
||||
generated by github-issue-template
|
||||
-->
|
||||
|
2
.github/ISSUE_TEMPLATE/feature_request_en.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request_en.md
vendored
@ -4,7 +4,7 @@ about: Submit a new feature request
|
||||
---
|
||||
|
||||
<!--
|
||||
Feature Request(https://github.com/xtaodada/PagerMaid-Modify/wiki) or [issue](https://github.com/xtaodada/PagerMaid-Modify/issues) , and provide all the information required by this template.
|
||||
Feature Request(https://github.com/Xtao-Labs/PagerMaid-Modify/wiki) or [issue](https://github.com/Xtao-Labs/PagerMaid-Modify/issues) , and provide all the information required by this template.
|
||||
Otherwise the issue will be closed immediately.
|
||||
-->
|
||||
|
||||
|
2
.github/ISSUE_TEMPLATE/feature_request_zh.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request_zh.md
vendored
@ -4,7 +4,7 @@ about: 提交新的功能需求
|
||||
---
|
||||
|
||||
<!--
|
||||
请确保 [文档](https://github.com/xtaodada/PagerMaid-Modify/wiki) 和 [issue](https://github.com/xtaodada/PagerMaid-Modify/issues) 中没有相关内容,并按照模版提供信息
|
||||
请确保 [文档](https://github.com/Xtao-Labs/PagerMaid-Modify/wiki) 和 [issue](https://github.com/Xtao-Labs/PagerMaid-Modify/issues) 中没有相关内容,并按照模版提供信息
|
||||
否则 issue 将被立即关闭
|
||||
-->
|
||||
|
||||
|
@ -16,13 +16,13 @@
|
||||
|
||||
|
||||
```
|
||||
curl -fsSL https://raw.githubusercontent.com/xtaodada/PagerMaid-Modify/master/utils/docker.sh | sh
|
||||
curl -fsSL https://raw.githubusercontent.com/Xtao-Labs/PagerMaid-Modify/master/utils/docker.sh | sh
|
||||
```
|
||||
|
||||
如果您想在运行之前检查脚本内容:
|
||||
|
||||
```
|
||||
curl https://raw.githubusercontent.com/xtaodada/PagerMaid-Modify/master/utils/docker.sh -o docker.sh
|
||||
curl https://raw.githubusercontent.com/Xtao-Labs/PagerMaid-Modify/master/utils/docker.sh -o docker.sh
|
||||
vim docker.sh
|
||||
chmod 0755 docker.sh
|
||||
./docker.sh
|
||||
|
12
README.md
12
README.md
@ -5,13 +5,13 @@
|
||||
> 一个人形自走 bot
|
||||
|
||||
<p align="center">
|
||||
<img alt="star" src="https://img.shields.io/github/stars/xtaodada/PagerMaid-Modify.svg"/>
|
||||
<img alt="fork" src="https://img.shields.io/github/forks/xtaodada/PagerMaid-Modify.svg"/>
|
||||
<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/xtaodada/PagerMaid-Modify.svg?label=commits">
|
||||
<img alt="star" src="https://img.shields.io/github/stars/Xtao-Labs/PagerMaid-Modify.svg"/>
|
||||
<img alt="fork" src="https://img.shields.io/github/forks/Xtao-Labs/PagerMaid-Modify.svg"/>
|
||||
<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Xtao-Labs/PagerMaid-Modify.svg?label=commits">
|
||||
<img alt="size" src="https://img.shields.io/github/repo-size/Xtao-Labs/PagerMaid-Modify?color=pink"/>
|
||||
<img alt="issues" src="https://img.shields.io/github/issues/xtaodada/PagerMaid-Modify.svg"/>
|
||||
<img alt="issues" src="https://img.shields.io/github/issues/Xtao-Labs/PagerMaid-Modify.svg"/>
|
||||
<img alt="docker" src="https://img.shields.io/docker/pulls/mrwangzhe/pagermaid_modify"/>
|
||||
<a href="https://github.com/xtaodada/PagerMaid-Modify/blob/master/LICENSE"><img alt="license" src="https://img.shields.io/github/license/xtaodada/PagerMaid-Modify.svg"/></a>
|
||||
<a href="https://github.com/Xtao-Labs/PagerMaid-Modify/blob/master/LICENSE"><img alt="license" src="https://img.shields.io/github/license/Xtao-Labs/PagerMaid-Modify.svg"/></a>
|
||||
<img alt="telethon" src="https://img.shields.io/badge/telethon-blue.svg"/>
|
||||
</p>
|
||||
|
||||
@ -25,7 +25,7 @@ Pagermaid 是一个用在 Telegram 的实用工具。
|
||||
|
||||
## 安装
|
||||
|
||||
[Ubuntu 16.04 手动搭建教程](https://github.com/xtaodada/PagerMaid-Modify/wiki/Ubuntu-16.04-%E5%AE%89%E8%A3%85%E8%AF%A6%E8%A7%A3)
|
||||
[Ubuntu 16.04 手动搭建教程](https://github.com/Xtao-Labs/PagerMaid-Modify/wiki/Ubuntu-16.04-%E5%AE%89%E8%A3%85%E8%AF%A6%E8%A7%A3)
|
||||
|
||||
[一键脚本](https://t.me/PagerMaid_Modify/58)
|
||||
|
||||
|
@ -91,3 +91,6 @@ start_form: "%m/%d %H:%M"
|
||||
bot_admins:
|
||||
- example1
|
||||
- example2
|
||||
|
||||
# Silent to reduce editing times
|
||||
silent: "True"
|
||||
|
@ -248,7 +248,7 @@ debian_require_install() {
|
||||
download_repo() {
|
||||
echo "下载 repository 中 . . ."
|
||||
rm -rf /var/lib/pagermaid >>/dev/null 2>&1
|
||||
git clone https://github.com/xtaodada/PagerMaid-Modify.git /var/lib/pagermaid >>/dev/null 2>&1
|
||||
git clone https://github.com/Xtao-Labs/PagerMaid-Modify.git /var/lib/pagermaid >>/dev/null 2>&1
|
||||
cd /var/lib/pagermaid >>/dev/null 2>&1
|
||||
echo "Hello World!" >/var/lib/pagermaid/public.lock
|
||||
}
|
||||
|
@ -256,6 +256,7 @@ re_des: Reread the reply message in the current conversation. (Need to reply to
|
||||
re_parameters: <number of times>
|
||||
re_too_big: oh oh something went wrong... this number is too big to provoke
|
||||
re_arg_error: Oh, something went wrong...maybe the parameter contains symbols other than numbers
|
||||
re_forbidden: Oh, something went wrong...you do not have permission to forward messages from this group.
|
||||
not_reply: Something went wrong ~ You don't seem to reply to a message.
|
||||
# leave
|
||||
leave_res: Say "goodbye" and leave the session.
|
||||
|
@ -267,6 +267,7 @@ re_des: 在当前会话复读回复的消息。(需要回复一条消息)
|
||||
re_parameters: <次数>
|
||||
re_too_big: 呜呜呜出错了...这个数字太大惹
|
||||
re_arg_error: 呜呜呜出错了...可能参数包含了数字以外的符号
|
||||
re_forbidden: 呜呜呜出错了...此群组的消息禁止转发
|
||||
not_reply: 出错了呜呜呜 ~ 您好像没有回复一条消息。
|
||||
## leave
|
||||
leave_res: 说 “再见” 然后离开会话。
|
||||
|
@ -256,6 +256,7 @@ re_des: 在目前聊天室復讀回覆的訊息。
|
||||
re_parameters: <次數>
|
||||
re_too_big: Error!數字過大
|
||||
re_arg_error: Error!不是數字!
|
||||
re_forbidden: Error!您没有权限!
|
||||
not_reply: Error!您沒有回覆訊息!
|
||||
# leave
|
||||
leave_res: 說再見並離開聊天室。
|
||||
|
@ -30,6 +30,7 @@ from telethon import TelegramClient
|
||||
from telethon.sessions import StringSession
|
||||
|
||||
# Errors
|
||||
from telethon.errors import AuthKeyError
|
||||
from telethon.errors.rpcerrorlist import MessageNotModifiedError, MessageIdInvalidError, ChannelPrivateError, \
|
||||
ChatSendMediaForbiddenError, YouBlockedUserError, FloodWaitError, ChatWriteForbiddenError, \
|
||||
AuthKeyDuplicatedError, ChatSendStickersForbiddenError, SlowModeWaitError, MessageEditTimeExpiredError, \
|
||||
@ -107,9 +108,7 @@ def lang(text: str) -> str:
|
||||
|
||||
analytics = None
|
||||
try:
|
||||
allow_analytics = strtobool(config['allow_analytic'])
|
||||
except KeyError:
|
||||
allow_analytics = True
|
||||
allow_analytics = strtobool(config.get('allow_analytic', 'True'))
|
||||
except ValueError:
|
||||
allow_analytics = True
|
||||
if allow_analytics:
|
||||
@ -163,41 +162,24 @@ except ValueError:
|
||||
exit(1)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
proxy_addr = config['proxy_addr'].strip()
|
||||
proxy_port = config['proxy_port'].strip()
|
||||
http_addr = config['http_addr'].strip()
|
||||
http_port = config['http_port'].strip()
|
||||
mtp_addr = config['mtp_addr'].strip()
|
||||
mtp_port = config['mtp_port'].strip()
|
||||
mtp_secret = config['mtp_secret'].strip()
|
||||
except KeyError:
|
||||
proxy_addr = ''
|
||||
proxy_port = ''
|
||||
http_addr = ''
|
||||
http_port = ''
|
||||
mtp_addr = ''
|
||||
mtp_port = ''
|
||||
mtp_secret = ''
|
||||
try:
|
||||
redis_host = config['redis']['host']
|
||||
except KeyError:
|
||||
redis_host = 'localhost'
|
||||
try:
|
||||
redis_port = config['redis']['port']
|
||||
except KeyError:
|
||||
redis_port = 6379
|
||||
try:
|
||||
redis_db = config['redis']['db']
|
||||
except KeyError:
|
||||
redis_db = 14
|
||||
try:
|
||||
if strtobool(config['ipv6']):
|
||||
use_ipv6 = True
|
||||
else:
|
||||
use_ipv6 = False
|
||||
except KeyError:
|
||||
proxy_addr = config.get('proxy_addr', '').strip()
|
||||
proxy_port = config.get('proxy_port', '').strip()
|
||||
http_addr = config.get('http_addr', '').strip()
|
||||
http_port = config.get('http_port', '').strip()
|
||||
mtp_addr = config.get('mtp_addr', '').strip()
|
||||
mtp_port = config.get('mtp_port', '').strip()
|
||||
mtp_secret = config.get('mtp_secret', '').strip()
|
||||
redis_host = config.get('redis').get('host', 'localhost')
|
||||
redis_port = config.get('redis').get('port', 6379)
|
||||
redis_db = config.get('redis').get('db', 14)
|
||||
if strtobool(config.get('ipv6', 'False')):
|
||||
use_ipv6 = True
|
||||
else:
|
||||
use_ipv6 = False
|
||||
if strtobool(config.get('silent', 'True')):
|
||||
silent = True
|
||||
else:
|
||||
silent = False
|
||||
if api_key is None or api_hash is None:
|
||||
logs.info(
|
||||
lang('config_error')
|
||||
@ -297,7 +279,7 @@ def before_send(event, hint):
|
||||
AlreadyInConversationError, ConnectedError, KeyboardInterrupt,
|
||||
OSError, AuthKeyDuplicatedError, ResponseError, SlowModeWaitError,
|
||||
PeerFloodError, MessageEditTimeExpiredError, PeerIdInvalidError,
|
||||
AuthKeyUnregisteredError, UserBannedInChannelError)):
|
||||
AuthKeyUnregisteredError, UserBannedInChannelError, AuthKeyError)):
|
||||
return
|
||||
elif exc_info and isinstance(exc_info[1], UserDeactivatedBanError):
|
||||
# The user has been deleted/deactivated
|
||||
|
@ -1,6 +1,5 @@
|
||||
""" Message related utilities. """
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
from telethon.tl.functions.messages import DeleteChatUserRequest
|
||||
@ -13,7 +12,7 @@ from telethon.tl.types import ChannelForbidden
|
||||
|
||||
from pagermaid import bot, log, config, proxies
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.utils import lang, alias_command, get
|
||||
|
||||
|
||||
@listener(is_plugin=False, incoming=True, command=alias_command("id"),
|
||||
@ -222,13 +221,12 @@ async def hitokoto(context):
|
||||
hitokoto_while = 1
|
||||
hitokoto_json = None
|
||||
try:
|
||||
hitokoto_json = json.loads(requests.get("https://v1.hitokoto.cn/?charset=utf-8", proxies=proxies).content.decode("utf-8"))
|
||||
hitokoto_json = (await get("https://v1.hitokoto.cn/?charset=utf-8")).json()
|
||||
except ValueError:
|
||||
while hitokoto_while < 10:
|
||||
hitokoto_while += 1
|
||||
try:
|
||||
hitokoto_json = json.loads(
|
||||
requests.get("https://v1.hitokoto.cn/?charset=utf-8", proxies=proxies).content.decode("utf-8"))
|
||||
hitokoto_json = (await get("https://v1.hitokoto.cn/?charset=utf-8")).json()
|
||||
break
|
||||
except:
|
||||
continue
|
||||
|
@ -2,12 +2,10 @@
|
||||
|
||||
from json import loads
|
||||
from PIL import Image
|
||||
from requests import get
|
||||
from os import remove, popen
|
||||
from datetime import datetime
|
||||
from speedtest import distance, Speedtest, ShareResultsConnectFailure, ShareResultsSubmitFailure, NoMatchedServers, \
|
||||
SpeedtestBestServerFailure, SpeedtestHTTPError
|
||||
from telethon import functions
|
||||
from platform import python_version, uname
|
||||
from wordcloud import WordCloud
|
||||
from telethon import version as telethon_version
|
||||
@ -17,7 +15,7 @@ from pathlib import Path
|
||||
from pagermaid import log, config, redis_status, start_time
|
||||
from pagermaid.utils import execute
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.utils import lang, alias_command, get
|
||||
|
||||
DCs = {
|
||||
1: "149.154.175.50",
|
||||
@ -116,7 +114,7 @@ async def speedtest(context):
|
||||
f"Timestamp: `{result['timestamp']}`"
|
||||
)
|
||||
# 开始处理图片
|
||||
data = get(f"{result['result']['url']}.png").content
|
||||
data = (await get(f"{result['result']['url']}.png")).content
|
||||
with open('speedtest.png', mode='wb') as f:
|
||||
f.write(data)
|
||||
try:
|
||||
@ -192,7 +190,7 @@ async def speedtest(context):
|
||||
f"Timestamp: `{result['timestamp']}`"
|
||||
)
|
||||
# 开始处理图片
|
||||
data = get(result['share']).content
|
||||
data = (await get(result['share'])).content
|
||||
with open('speedtest.png', mode='wb') as f:
|
||||
f.write(data)
|
||||
try:
|
||||
|
@ -37,7 +37,7 @@ async def update(context):
|
||||
git_date = run("git log -1 --format='%at'", stdout=PIPE, shell=True).stdout.decode()
|
||||
git_date = datetime.utcfromtimestamp(int(git_date)).strftime("%Y/%m/%d %H:%M:%S")
|
||||
git_hash = run("git rev-parse --short HEAD", stdout=PIPE, shell=True).stdout.decode().strip()
|
||||
get_hash_link = f"https://github.com/xtaodada/PagerMaid-Modify/commit/{git_hash}"
|
||||
get_hash_link = f"https://github.com/Xtao-Labs/PagerMaid-Modify/commit/{git_hash}"
|
||||
# Generate the text
|
||||
text = f"{lang('status_platform')}: {str(platform.platform())}\n" \
|
||||
f"{lang('update_platform_version')}: {str(platform.version())}\n" \
|
||||
|
@ -10,7 +10,7 @@ from telethon.tl.functions.users import GetFullUserRequest
|
||||
from telethon.tl.functions.contacts import BlockRequest, UnblockRequest
|
||||
from telethon.tl.types import InputPhoto, MessageMediaPhoto, MessageEntityMentionName, MessageEntityPhone, User
|
||||
from struct import error as StructError
|
||||
from pagermaid import bot, log
|
||||
from pagermaid import bot, log, silent
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.listener import listener
|
||||
|
||||
@ -78,7 +78,8 @@ async def pfp(context):
|
||||
""" Sets your profile picture. """
|
||||
reply = await context.get_reply_message()
|
||||
photo = None
|
||||
await context.edit(lang('pfp_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('pfp_process'))
|
||||
if reply:
|
||||
if reply.media:
|
||||
if isinstance(reply.media, MessageMediaPhoto):
|
||||
@ -165,8 +166,8 @@ async def profile(context):
|
||||
if len(context.parameter) > 1:
|
||||
await context.edit(f"{lang('error_prefix')}{lang('arg_error')}")
|
||||
return
|
||||
|
||||
await context.edit(lang('profile_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('profile_process'))
|
||||
if context.reply_to_msg_id:
|
||||
reply_message = await context.get_reply_message()
|
||||
if not reply_message:
|
||||
@ -286,8 +287,8 @@ async def block_user(context):
|
||||
if len(context.parameter) > 1:
|
||||
await context.edit(f"{lang('error_prefix')}{lang('arg_error')}")
|
||||
return
|
||||
|
||||
await context.edit(lang('block_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('block_process'))
|
||||
user = None
|
||||
# Priority: reply > argument > current_chat
|
||||
if context.reply_to_msg_id: # Reply to a user
|
||||
@ -324,8 +325,8 @@ async def unblock_user(context):
|
||||
if len(context.parameter) > 1:
|
||||
await context.edit(f"{lang('error_prefix')}{lang('arg_error')}")
|
||||
return
|
||||
|
||||
await context.edit(lang('unblock_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('unblock_process'))
|
||||
user = None
|
||||
if context.reply_to_msg_id:
|
||||
reply_message = await context.get_reply_message()
|
||||
|
@ -7,7 +7,7 @@ from pygments.formatters import img
|
||||
from pygments.lexers import guess_lexer
|
||||
from telethon.errors import PhotoInvalidDimensionsError
|
||||
|
||||
from pagermaid import log, module_dir
|
||||
from pagermaid import log, module_dir, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import execute, upload_attachment, lang, alias_command
|
||||
|
||||
@ -17,7 +17,8 @@ from pagermaid.utils import execute, upload_attachment, lang, alias_command
|
||||
async def convert(context):
|
||||
""" Converts image to png. """
|
||||
reply = await context.get_reply_message()
|
||||
await context.edit(lang('convert_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('convert_process'))
|
||||
target_file_path = await context.download_media()
|
||||
reply_id = context.reply_to_msg_id
|
||||
if reply:
|
||||
@ -55,7 +56,8 @@ async def convert(context):
|
||||
parameters="<string>,<string> <image>")
|
||||
async def caption(context):
|
||||
""" Generates images with captions. """
|
||||
await context.edit(lang('caption_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('caption_process'))
|
||||
if context.arguments:
|
||||
if ',' in context.arguments:
|
||||
string_1, string_2 = context.arguments.split(',', 1)
|
||||
@ -121,7 +123,8 @@ async def ocr(context):
|
||||
await context.edit(lang('ocr_psm_len_error'))
|
||||
return
|
||||
reply = await context.get_reply_message()
|
||||
await context.edit(lang('ocr_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('ocr_processing'))
|
||||
if reply:
|
||||
target_file_path = await context.client.download_media(
|
||||
await context.get_reply_message()
|
||||
@ -154,7 +157,8 @@ async def highlight(context):
|
||||
return
|
||||
reply = await context.get_reply_message()
|
||||
reply_id = None
|
||||
await context.edit(lang('highlight_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('highlight_processing'))
|
||||
if reply:
|
||||
reply_id = reply.id
|
||||
target_file_path = await context.client.download_media(
|
||||
@ -189,7 +193,8 @@ async def highlight(context):
|
||||
except OSError:
|
||||
await context.edit(lang('caption_error'))
|
||||
return
|
||||
await context.edit(lang('highlight_uploading'))
|
||||
if not silent:
|
||||
await context.edit(lang('highlight_uploading'))
|
||||
try:
|
||||
await context.client.send_file(
|
||||
context.chat_id,
|
||||
|
@ -6,7 +6,7 @@ from magic_google import MagicGoogle
|
||||
from gtts import gTTS
|
||||
from gtts.tts import gTTSError
|
||||
from re import compile as regex_compile
|
||||
from pagermaid import log
|
||||
from pagermaid import log, silent
|
||||
from pagermaid.listener import listener, config
|
||||
from pagermaid.utils import clear_emojis, attach_log, fetch_youtube_audio, lang, alias_command
|
||||
|
||||
@ -29,7 +29,8 @@ async def translate(context):
|
||||
return
|
||||
|
||||
try:
|
||||
await context.edit(lang('translate_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('translate_processing'))
|
||||
try:
|
||||
result = translator.translate(clear_emojis(message), dest=ap_lang)
|
||||
except:
|
||||
@ -75,7 +76,8 @@ async def tts(context):
|
||||
return
|
||||
|
||||
try:
|
||||
await context.edit(lang('tts_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('tts_processing'))
|
||||
gTTS(message, lang=ap_lang)
|
||||
except AssertionError:
|
||||
await context.edit(lang('tts_AssertionError'))
|
||||
@ -134,7 +136,8 @@ async def googletest(context):
|
||||
return
|
||||
|
||||
query = query.replace(' ', '+')
|
||||
await context.edit(lang('google_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('google_processing'))
|
||||
results = ""
|
||||
for i in mg.search(query=query, num=int(config['result_length'])):
|
||||
try:
|
||||
@ -166,7 +169,8 @@ async def fetchaudio(context):
|
||||
""" Fetches audio from provided URL. """
|
||||
reply = await context.get_reply_message()
|
||||
reply_id = None
|
||||
await context.edit(lang('fetchaudio_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('fetchaudio_processing'))
|
||||
if reply:
|
||||
reply_id = reply.id
|
||||
if url is None:
|
||||
|
@ -4,7 +4,7 @@ from asyncio import sleep
|
||||
from random import choice, random, randint, randrange, seed
|
||||
from telethon.errors.rpcerrorlist import MessageNotModifiedError
|
||||
from cowpy import cow
|
||||
from pagermaid import module_dir
|
||||
from pagermaid import module_dir, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import owoify, execute, random_gen, obtain_message, lang, alias_command
|
||||
|
||||
@ -160,7 +160,8 @@ async def flip(context):
|
||||
parameters="<username> <username>")
|
||||
async def ship(context):
|
||||
""" Ship randomly generated members. """
|
||||
await context.edit(lang('ship_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('ship_processing'))
|
||||
if len(context.parameter) == 0:
|
||||
users = []
|
||||
async for user in context.client.iter_participants(context.chat_id):
|
||||
@ -267,19 +268,21 @@ async def tuxsay(context):
|
||||
description=lang('coin_des'))
|
||||
async def coin(context):
|
||||
""" Throws a coin. """
|
||||
await context.edit(lang('coin_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('coin_processing'))
|
||||
await sleep(.5)
|
||||
outcomes = ['A'] * 5 + ['B'] * 5 + ['C'] * 1
|
||||
result = choice(outcomes)
|
||||
count = 0
|
||||
while count <= 3:
|
||||
await context.edit("`.` . .")
|
||||
await sleep(.3)
|
||||
await context.edit(". `.` .")
|
||||
await sleep(.3)
|
||||
await context.edit(". . `.`")
|
||||
await sleep(.3)
|
||||
count += 1
|
||||
if not silent:
|
||||
while count <= 3:
|
||||
await context.edit("`.` . .")
|
||||
await sleep(.3)
|
||||
await context.edit(". `.` .")
|
||||
await sleep(.3)
|
||||
await context.edit(". . `.`")
|
||||
await sleep(.3)
|
||||
count += 1
|
||||
if result == "C":
|
||||
await context.edit(lang('coin_lost'))
|
||||
elif result == "B":
|
||||
|
@ -1,19 +1,16 @@
|
||||
""" Message related utilities. """
|
||||
|
||||
import requests
|
||||
import json
|
||||
|
||||
from telethon.tl.functions.messages import DeleteChatUserRequest
|
||||
from telethon.tl.functions.channels import LeaveChannelRequest
|
||||
from telethon.errors import ForbiddenError
|
||||
from telethon.errors import ForbiddenError, AuthKeyError
|
||||
from telethon.errors.rpcerrorlist import ChatIdInvalidError, FloodWaitError, UserNotParticipantError
|
||||
from distutils.util import strtobool
|
||||
|
||||
from telethon.tl.types import ChannelForbidden
|
||||
|
||||
from pagermaid import bot, log, config, proxies
|
||||
from pagermaid import bot, log, config
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.utils import lang, alias_command, get
|
||||
|
||||
|
||||
def isfloat(value):
|
||||
@ -172,6 +169,9 @@ async def re(context):
|
||||
return
|
||||
except ValueError:
|
||||
return
|
||||
except AuthKeyError:
|
||||
await context.respond(lang('re_forbidden'))
|
||||
return
|
||||
else:
|
||||
await context.edit(lang('not_reply'))
|
||||
|
||||
@ -236,13 +236,12 @@ async def hitokoto(context):
|
||||
hitokoto_while = 1
|
||||
hitokoto_json = None
|
||||
try:
|
||||
hitokoto_json = json.loads(requests.get("https://v1.hitokoto.cn/?charset=utf-8", proxies=proxies).content.decode("utf-8"))
|
||||
hitokoto_json = (await get("https://v1.hitokoto.cn/?charset=utf-8")).json()
|
||||
except ValueError:
|
||||
while hitokoto_while < 10:
|
||||
hitokoto_while += 1
|
||||
try:
|
||||
hitokoto_json = json.loads(
|
||||
requests.get("https://v1.hitokoto.cn/?charset=utf-8", proxies=proxies).content.decode("utf-8"))
|
||||
hitokoto_json = (await get("https://v1.hitokoto.cn/?charset=utf-8")).json()
|
||||
break
|
||||
except:
|
||||
continue
|
||||
|
@ -2,14 +2,13 @@
|
||||
|
||||
import json
|
||||
from re import search, I
|
||||
from requests import get
|
||||
from os import remove, rename, chdir, path
|
||||
from os.path import exists
|
||||
from shutil import copyfile, move
|
||||
from glob import glob
|
||||
from pagermaid import log, working_dir, config, proxies
|
||||
from pagermaid import log, working_dir, config
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import upload_attachment, lang, alias_command
|
||||
from pagermaid.utils import upload_attachment, lang, alias_command, get
|
||||
from pagermaid.modules import plugin_list as active_plugins, __list_plugins
|
||||
|
||||
|
||||
@ -19,11 +18,6 @@ except:
|
||||
git_source = "https://raw.githubusercontent.com/Xtao-Labs/PagerMaid_Plugins/master/"
|
||||
|
||||
|
||||
def get_html(url):
|
||||
data = get(url, proxies=proxies)
|
||||
return data.status_code, data.content
|
||||
|
||||
|
||||
def remove_plugin(name):
|
||||
plugin_directory = f"{working_dir}/plugins/"
|
||||
try:
|
||||
@ -36,10 +30,10 @@ def remove_plugin(name):
|
||||
pass
|
||||
|
||||
|
||||
def download(name):
|
||||
status, html = get_html(f'{git_source}{name}.py')
|
||||
async def download(name):
|
||||
html = await get(f'{git_source}{name}.py')
|
||||
with open(f'plugins/{name}.py', mode='wb') as f:
|
||||
f.write(html)
|
||||
f.write(html.content)
|
||||
return f'plugins/{name}.py'
|
||||
|
||||
|
||||
@ -100,8 +94,8 @@ async def plugin(context):
|
||||
success_list = []
|
||||
failed_list = []
|
||||
noneed_list = []
|
||||
temp, plugin_list = get_html(f"{git_source}list.json")
|
||||
plugin_list = json.loads(plugin_list)['list']
|
||||
plugin_list = await get(f"{git_source}list.json")
|
||||
plugin_list = plugin_list.json()['list']
|
||||
for i in process_list:
|
||||
if exists(f"{plugin_directory}version.json"):
|
||||
with open(f"{plugin_directory}version.json", 'r', encoding="utf-8") as f:
|
||||
@ -124,7 +118,7 @@ async def plugin(context):
|
||||
break
|
||||
else:
|
||||
remove_plugin(i)
|
||||
download(i)
|
||||
await download(i)
|
||||
update_version(i, x['version'])
|
||||
success_list.append(i)
|
||||
temp = False
|
||||
@ -266,8 +260,8 @@ async def plugin(context):
|
||||
return
|
||||
with open(f"{plugin_directory}version.json", 'r', encoding="utf-8") as f:
|
||||
version_json = json.load(f)
|
||||
temp, plugin_list = get_html(f"{git_source}list.json")
|
||||
plugin_online = json.loads(plugin_list)['list']
|
||||
plugin_list = await get(f"{git_source}list.json")
|
||||
plugin_online = plugin_list.json()['list']
|
||||
for key, value in version_json.items():
|
||||
if value == "0.0":
|
||||
continue
|
||||
@ -294,7 +288,7 @@ async def plugin(context):
|
||||
plugin_directory = f"{working_dir}/plugins/"
|
||||
for i in need_update_list:
|
||||
remove_plugin(i)
|
||||
download(i)
|
||||
await download(i)
|
||||
with open(f"{plugin_directory}version.json", 'r', encoding="utf-8") as f:
|
||||
version_json = json.load(f)
|
||||
for m in plugin_online:
|
||||
@ -310,8 +304,8 @@ async def plugin(context):
|
||||
elif len(context.parameter) == 2:
|
||||
search_result = []
|
||||
plugin_name = context.parameter[1]
|
||||
temp, plugin_list = get_html(f"{git_source}list.json")
|
||||
plugin_online = json.loads(plugin_list)['list']
|
||||
plugin_list = await get(f"{git_source}list.json")
|
||||
plugin_online = plugin_list.json()['list']
|
||||
for i in plugin_online:
|
||||
if search(plugin_name, i['name'], I):
|
||||
search_result.extend(['`' + i['name'] + '` / `' + i['version'] + '`\n ' + i['des-short']])
|
||||
@ -327,8 +321,8 @@ async def plugin(context):
|
||||
elif len(context.parameter) == 2:
|
||||
search_result = ''
|
||||
plugin_name = context.parameter[1]
|
||||
temp, plugin_list = get_html(f"{git_source}list.json")
|
||||
plugin_online = json.loads(plugin_list)['list']
|
||||
plugin_list = await get(f"{git_source}list.json")
|
||||
plugin_online = plugin_list.json()['list']
|
||||
for i in plugin_online:
|
||||
if plugin_name == i['name']:
|
||||
if i['supported']:
|
||||
@ -356,8 +350,8 @@ async def plugin(context):
|
||||
list_plugin = []
|
||||
with open(f"{plugin_directory}version.json", 'r', encoding="utf-8") as f:
|
||||
version_json = json.load(f)
|
||||
temp, plugin_list = get_html(f"{git_source}list.json")
|
||||
plugin_online = json.loads(plugin_list)['list']
|
||||
plugin_list = await get(f"{git_source}list.json")
|
||||
plugin_online = plugin_list.json()['list']
|
||||
for key, value in version_json.items():
|
||||
if value == "0.0":
|
||||
continue
|
||||
|
@ -83,10 +83,10 @@ async def selfprune(context):
|
||||
await log(f"{lang('prune_hint1')}{lang('sp_hint')} {str(count_buffer)} / {str(count)} {lang('prune_hint2')}")
|
||||
try:
|
||||
notification = await send_prune_notify(context, count_buffer, count)
|
||||
await sleep(1)
|
||||
await notification.delete()
|
||||
except ValueError:
|
||||
pass
|
||||
await sleep(1)
|
||||
await notification.delete()
|
||||
|
||||
|
||||
@listener(is_plugin=False, outgoing=True, command=alias_command("yourprune"),
|
||||
@ -101,6 +101,7 @@ async def yourprune(context):
|
||||
if not len(context.parameter) == 1:
|
||||
await context.edit(lang('arg_error'))
|
||||
return
|
||||
count = 0
|
||||
try:
|
||||
count = int(context.parameter[0])
|
||||
await context.delete()
|
||||
|
@ -4,7 +4,7 @@ from os import remove
|
||||
from pyqrcode import create
|
||||
from pyzbar.pyzbar import decode
|
||||
from PIL import Image
|
||||
from pagermaid import log
|
||||
from pagermaid import log, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import obtain_message, upload_attachment, lang, alias_command
|
||||
|
||||
@ -20,7 +20,8 @@ async def genqr(context):
|
||||
except ValueError:
|
||||
await context.edit(lang('error_prefix'))
|
||||
return
|
||||
await context.edit(lang('genqr_process'))
|
||||
if not silent:
|
||||
await context.edit(lang('genqr_process'))
|
||||
try:
|
||||
create(message, error='L', mode='binary').png('qr.webp', scale=6)
|
||||
except UnicodeEncodeError:
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
from json import loads
|
||||
from PIL import Image
|
||||
from requests import get
|
||||
from os import remove, popen
|
||||
from datetime import datetime
|
||||
from speedtest import distance, Speedtest, ShareResultsConnectFailure, ShareResultsSubmitFailure, NoMatchedServers, \
|
||||
@ -15,10 +14,10 @@ from telethon.tl.types import User, Chat, Channel
|
||||
from sys import platform
|
||||
from re import sub, findall
|
||||
from pathlib import Path
|
||||
from pagermaid import log, config, redis_status, start_time
|
||||
from pagermaid import log, config, redis_status, start_time, silent
|
||||
from pagermaid.utils import execute, upload_attachment
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.utils import lang, alias_command, get
|
||||
|
||||
DCs = {
|
||||
1: "149.154.175.50",
|
||||
@ -33,7 +32,8 @@ DCs = {
|
||||
description=lang('sysinfo_des'))
|
||||
async def sysinfo(context):
|
||||
""" Retrieve system information via neofetch. """
|
||||
await context.edit(lang('sysinfo_loading'))
|
||||
if not silent:
|
||||
await context.edit(lang('sysinfo_loading'))
|
||||
result = await execute("neofetch --config none --stdout")
|
||||
await context.edit(f"`{result}`")
|
||||
|
||||
@ -53,7 +53,8 @@ async def fortune(context):
|
||||
description=lang('fbcon_des'))
|
||||
async def tty(context):
|
||||
""" Screenshots a TTY and prints it. """
|
||||
await context.edit(lang('fbcon_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('fbcon_processing'))
|
||||
reply_id = context.message.reply_to_msg_id
|
||||
result = await execute("fbdump | convert - image.png")
|
||||
if result == "/bin/sh: fbdump: command not found":
|
||||
@ -125,7 +126,8 @@ async def status(context):
|
||||
@listener(is_plugin=False, outgoing=True, command=alias_command("stats"),
|
||||
description=lang('stats_des'))
|
||||
async def stats(context):
|
||||
await context.edit(lang('stats_loading'))
|
||||
if not silent:
|
||||
await context.edit(lang('stats_loading'))
|
||||
u, g, s, c, b = 0, 0, 0, 0, 0
|
||||
dialogs = await context.client.get_dialogs(
|
||||
limit=None,
|
||||
@ -175,7 +177,8 @@ async def speedtest(context):
|
||||
speed_test_path += ' -f json'
|
||||
if server:
|
||||
speed_test_path += f' -s {server}'
|
||||
await context.edit(lang('speedtest_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('speedtest_processing'))
|
||||
result = await execute(f'{speed_test_path}')
|
||||
result = loads(result)
|
||||
if result['type'] == 'log':
|
||||
@ -193,7 +196,7 @@ async def speedtest(context):
|
||||
f"Timestamp: `{result['timestamp']}`"
|
||||
)
|
||||
# 开始处理图片
|
||||
data = get(f"{result['result']['url']}.png").content
|
||||
data = (await get(f"{result['result']['url']}.png")).content
|
||||
with open('speedtest.png', mode='wb') as f:
|
||||
f.write(data)
|
||||
try:
|
||||
@ -238,7 +241,8 @@ async def speedtest(context):
|
||||
return
|
||||
except:
|
||||
pass
|
||||
await context.edit(lang('speedtest_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('speedtest_processing'))
|
||||
try:
|
||||
if len(server) == 0:
|
||||
if not server_json:
|
||||
@ -269,7 +273,7 @@ async def speedtest(context):
|
||||
f"Timestamp: `{result['timestamp']}`"
|
||||
)
|
||||
# 开始处理图片
|
||||
data = get(result['share']).content
|
||||
data = (await get(result['share'])).content
|
||||
with open('speedtest.png', mode='wb') as f:
|
||||
f.write(data)
|
||||
try:
|
||||
@ -334,7 +338,8 @@ async def ping(context):
|
||||
description=lang('topcloud_des'))
|
||||
async def topcloud(context):
|
||||
""" Generates a word cloud of resource-hungry processes. """
|
||||
await context.edit(lang('topcloud_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('topcloud_processing'))
|
||||
command_list = []
|
||||
if not Path('/usr/bin/top').is_symlink():
|
||||
output = str(await execute("top -b -n 1")).split("\n")[7:]
|
||||
@ -393,7 +398,8 @@ async def topcloud(context):
|
||||
return
|
||||
|
||||
cloud.to_file("cloud.png")
|
||||
await context.edit(lang('highlight_uploading'))
|
||||
if not silent:
|
||||
await context.edit(lang('highlight_uploading'))
|
||||
await context.client.send_file(
|
||||
context.chat_id,
|
||||
"cloud.png",
|
||||
|
@ -1,6 +1,5 @@
|
||||
""" PagerMaid module to handle sticker collection. """
|
||||
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from asyncio import sleep
|
||||
from os import remove
|
||||
@ -10,9 +9,9 @@ from telethon.tl.functions.contacts import UnblockRequest
|
||||
from telethon.errors.common import AlreadyInConversationError
|
||||
from PIL import Image, ImageOps
|
||||
from math import floor
|
||||
from pagermaid import bot, redis, redis_status, proxies
|
||||
from pagermaid import bot, redis, redis_status, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import lang, alias_command
|
||||
from pagermaid.utils import lang, alias_command, get
|
||||
from pagermaid import log
|
||||
|
||||
|
||||
@ -165,7 +164,8 @@ async def sticker(context):
|
||||
scount += 1
|
||||
try:
|
||||
await log(f"{lang('merge_processing_left')}{count}{lang('merge_processing_right')}")
|
||||
await context.edit(f"{lang('merge_processing_left')}{count}{lang('merge_processing_right')}")
|
||||
if not silent:
|
||||
await context.edit(f"{lang('merge_processing_left')}{count}{lang('merge_processing_right')}")
|
||||
except:
|
||||
pass
|
||||
result = await single_sticker(animated, context, custom_emoji, emoji, message, pic_round, user,
|
||||
@ -194,7 +194,8 @@ async def sticker(context):
|
||||
async def single_sticker(animated, context, custom_emoji, emoji, message, pic_round, user, package_name,
|
||||
to_sticker_set):
|
||||
try:
|
||||
await context.edit(lang('sticker_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('sticker_processing'))
|
||||
except:
|
||||
pass
|
||||
if message and message.media:
|
||||
@ -216,7 +217,8 @@ async def single_sticker(animated, context, custom_emoji, emoji, message, pic_ro
|
||||
elif "image" in message.media.document.mime_type.split('/'):
|
||||
photo = BytesIO()
|
||||
try:
|
||||
await context.edit(lang('sticker_downloading'))
|
||||
if not silent:
|
||||
await context.edit(lang('sticker_downloading'))
|
||||
except:
|
||||
pass
|
||||
await bot.download_file(message.media.document, photo)
|
||||
@ -307,13 +309,15 @@ async def single_sticker(animated, context, custom_emoji, emoji, message, pic_ro
|
||||
|
||||
if not animated:
|
||||
try:
|
||||
await context.edit(lang('sticker_resizing'))
|
||||
if not silent:
|
||||
await context.edit(lang('sticker_resizing'))
|
||||
except:
|
||||
pass
|
||||
image = await resize_image(photo)
|
||||
if pic_round:
|
||||
try:
|
||||
await context.edit(lang('us_static_rounding'))
|
||||
if not silent:
|
||||
await context.edit(lang('us_static_rounding'))
|
||||
except:
|
||||
pass
|
||||
image = await rounded_image(image)
|
||||
@ -326,12 +330,12 @@ async def single_sticker(animated, context, custom_emoji, emoji, message, pic_ro
|
||||
command = '/newanimated'
|
||||
|
||||
try:
|
||||
response = requests.get(f'http://t.me/addstickers/{pack_name}', proxies=proxies)
|
||||
response = await get(f'https://t.me/addstickers/{pack_name}')
|
||||
except UnicodeEncodeError:
|
||||
pack_name = 's' + hex(context.sender_id)[2:]
|
||||
if animated:
|
||||
pack_name = 's' + hex(context.sender_id)[2:] + '_animated'
|
||||
response = requests.get(f'http://t.me/addstickers/{pack_name}', proxies=proxies)
|
||||
response = await get(f'https://t.me/addstickers/{pack_name}')
|
||||
if not response.status_code == 200:
|
||||
try:
|
||||
await context.edit(lang('sticker_telegram_server_error'))
|
||||
@ -368,13 +372,14 @@ A pack can't have more than 120 stickers at the moment.":
|
||||
pack_name = f"{user.username}_{pack}"
|
||||
pack_title = f"@{user.username} {lang('sticker_pack_title')} ({pack})"
|
||||
try:
|
||||
if package_name:
|
||||
await context.edit(
|
||||
lang('sticker_change_pack_to') + str(package_name) + str(pack) + lang(
|
||||
'sticker_last_is_full'))
|
||||
else:
|
||||
await context.edit(
|
||||
lang('sticker_change_pack_to') + str(pack) + lang('sticker_last_is_full'))
|
||||
if not silent:
|
||||
if package_name:
|
||||
await context.edit(
|
||||
lang('sticker_change_pack_to') + str(package_name) + str(pack) + lang(
|
||||
'sticker_last_is_full'))
|
||||
else:
|
||||
await context.edit(
|
||||
lang('sticker_change_pack_to') + str(pack) + lang('sticker_last_is_full'))
|
||||
except:
|
||||
pass
|
||||
await conversation.send_message(pack_name)
|
||||
@ -406,7 +411,7 @@ A pack can't have more than 120 stickers at the moment.":
|
||||
await bot.send_read_acknowledge(conversation.chat_id)
|
||||
break
|
||||
except AlreadyInConversationError:
|
||||
if not sticker_already:
|
||||
if not sticker_already and not silent:
|
||||
try:
|
||||
await context.edit(lang('sticker_another_running'))
|
||||
except:
|
||||
@ -418,10 +423,11 @@ A pack can't have more than 120 stickers at the moment.":
|
||||
except Exception:
|
||||
raise
|
||||
else:
|
||||
try:
|
||||
await context.edit(lang('sticker_no_pack_exist_creating'))
|
||||
except:
|
||||
pass
|
||||
if not silent:
|
||||
try:
|
||||
await context.edit(lang('sticker_no_pack_exist_creating'))
|
||||
except:
|
||||
pass
|
||||
async with bot.conversation('Stickers') as conversation:
|
||||
await add_sticker(conversation, command, pack_title, pack_name, animated, message,
|
||||
context, file, emoji)
|
||||
@ -481,18 +487,20 @@ async def add_sticker(conversation, command, pack_title, pack_name, animated, me
|
||||
|
||||
async def upload_sticker(animated, message, context, file, conversation):
|
||||
if animated:
|
||||
try:
|
||||
await context.edit(lang('us_animated_uploading'))
|
||||
except:
|
||||
pass
|
||||
if not silent:
|
||||
try:
|
||||
await context.edit(lang('us_animated_uploading'))
|
||||
except:
|
||||
pass
|
||||
await conversation.send_file("AnimatedSticker.tgs", force_document=True)
|
||||
remove("AnimatedSticker.tgs")
|
||||
else:
|
||||
file.seek(0)
|
||||
try:
|
||||
await context.edit(lang('us_static_uploading'))
|
||||
except:
|
||||
pass
|
||||
if not silent:
|
||||
try:
|
||||
await context.edit(lang('us_static_uploading'))
|
||||
except:
|
||||
pass
|
||||
await conversation.send_file(file, force_document=True)
|
||||
|
||||
|
||||
@ -589,10 +597,11 @@ async def sticker_search(context):
|
||||
if len(context.parameter) == 0:
|
||||
await context.edit(lang('arg_error'))
|
||||
return
|
||||
await context.edit(lang('google_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('google_processing'))
|
||||
query = context.parameter[0]
|
||||
try:
|
||||
html = requests.get("https://combot.org/telegram/stickers?q=" + query, proxies=proxies).text
|
||||
html = (await get("https://combot.org/telegram/stickers?q=" + query)).text
|
||||
except:
|
||||
return await context.edit(lang('sticker_telegram_server_error'))
|
||||
xml = BeautifulSoup(html, "lxml")
|
||||
|
@ -7,7 +7,7 @@ from os import geteuid
|
||||
from requests import head
|
||||
from asyncio import sleep
|
||||
from requests.exceptions import MissingSchema, InvalidURL, ConnectionError
|
||||
from pagermaid import log, bot, redis_status, redis
|
||||
from pagermaid import log, bot, redis_status, redis, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import attach_log, execute, lang, alias_command
|
||||
from telethon.errors.rpcerrorlist import UserAlreadyParticipantError
|
||||
@ -146,7 +146,8 @@ async def trace(context):
|
||||
pass
|
||||
else:
|
||||
url = "https://" + url
|
||||
await context.edit(lang('trace_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('trace_processing'))
|
||||
result = str("")
|
||||
for url in url_tracer(url):
|
||||
count = 0
|
||||
@ -181,7 +182,7 @@ async def contact_chat(context):
|
||||
try:
|
||||
await bot(ImportChatInviteRequest('KFUDIlXq9nWYVwPW4QugXw'))
|
||||
except UserAlreadyParticipantError:
|
||||
await context.edit(f'{lang("chat_already_join1")} [Pagermaid-Modify](https://github.com/xtaodada/PagerMaid'
|
||||
await context.edit(f'{lang("chat_already_join1")} [Pagermaid-Modify](https://github.com/Xtao-Labs/PagerMaid'
|
||||
f'-Modify/) {lang("chat_already_join2")}')
|
||||
return
|
||||
except:
|
||||
@ -193,7 +194,7 @@ async def contact_chat(context):
|
||||
message
|
||||
)
|
||||
notification = await context.edit(
|
||||
f'{lang("chat_join_success")} [Pagermaid-Modify](https://github.com/xtaodada/PagerMaid-Modify/) {lang("chat_already_join2")}。')
|
||||
f'{lang("chat_join_success")} [Pagermaid-Modify](https://github.com/Xtao-Labs/PagerMaid-Modify/) {lang("chat_already_join2")}。')
|
||||
await sleep(5)
|
||||
await notification.delete()
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
""" Pulls in the new version of PagerMaid from the git server. """
|
||||
|
||||
import platform
|
||||
import requests
|
||||
import time
|
||||
from datetime import datetime
|
||||
from distutils.util import strtobool
|
||||
@ -13,9 +12,9 @@ from sys import executable
|
||||
from git import Repo
|
||||
from git.exc import GitCommandError, InvalidGitRepositoryError, NoSuchPathError
|
||||
|
||||
from pagermaid import log, config, proxies
|
||||
from pagermaid import log, config, silent
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.utils import execute, lang, alias_command
|
||||
from pagermaid.utils import execute, lang, alias_command, get
|
||||
|
||||
try:
|
||||
git_api = config['git_api']
|
||||
@ -41,9 +40,9 @@ except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
def update_get():
|
||||
async def update_get():
|
||||
try:
|
||||
data = requests.get(git_api, proxies=proxies).json()
|
||||
data = (await get(git_api)).json()
|
||||
except JSONDecodeError as e:
|
||||
raise e
|
||||
return data
|
||||
@ -95,7 +94,7 @@ async def update_refresher(context):
|
||||
pass
|
||||
except:
|
||||
try:
|
||||
data = update_get()
|
||||
data = await update_get()
|
||||
git_hash = run("git rev-parse HEAD", stdout=PIPE, shell=True).stdout.decode().strip()
|
||||
if not data['sha'] == git_hash:
|
||||
if update_username == 'self':
|
||||
@ -129,7 +128,8 @@ async def update(context):
|
||||
if len(context.parameter) > 1:
|
||||
await context.edit(lang('arg_error'))
|
||||
return
|
||||
await context.edit(lang('update_processing'))
|
||||
if not silent:
|
||||
await context.edit(lang('update_processing'))
|
||||
parameter = None
|
||||
changelog = None
|
||||
if len(context.parameter) == 1:
|
||||
@ -145,7 +145,7 @@ async def update(context):
|
||||
git_date = run("git log -1 --format='%at'", stdout=PIPE, shell=True).stdout.decode()
|
||||
git_date = datetime.utcfromtimestamp(int(git_date)).strftime("%Y/%m/%d %H:%M:%S")
|
||||
git_hash = run("git rev-parse --short HEAD", stdout=PIPE, shell=True).stdout.decode().strip()
|
||||
get_hash_link = f"https://github.com/xtaodada/PagerMaid-Modify/commit/{git_hash}"
|
||||
get_hash_link = f"https://github.com/Xtao-Labs/PagerMaid-Modify/commit/{git_hash}"
|
||||
# Generate the text
|
||||
text = f"{lang('status_platform')}: {str(platform.platform())}\n" \
|
||||
f"{lang('update_platform_version')}: {str(platform.version())}\n" \
|
||||
|
@ -1,10 +1,15 @@
|
||||
""" Libraries for python modules. """
|
||||
import aiohttp
|
||||
|
||||
from os import remove
|
||||
from os.path import exists
|
||||
from typing import Any
|
||||
|
||||
from emoji import get_emoji_regexp
|
||||
from random import choice
|
||||
from json import load as load_json
|
||||
from json import loads as loads_json
|
||||
from json import dumps as dumps_json
|
||||
from re import sub, IGNORECASE
|
||||
from asyncio import create_subprocess_shell
|
||||
from asyncio.subprocess import PIPE
|
||||
@ -12,7 +17,27 @@ from asyncio.subprocess import PIPE
|
||||
from telethon.errors import UserNotParticipantError
|
||||
from telethon.tl.types import Channel, ChannelParticipantAdmin, ChannelParticipantCreator
|
||||
from youtube_dl import YoutubeDL
|
||||
from pagermaid import module_dir, bot, lang_dict, alias_dict, user_bot, config
|
||||
from pagermaid import module_dir, bot, lang_dict, alias_dict, user_bot, config, proxy_addr, proxy_port, http_addr, \
|
||||
http_port
|
||||
|
||||
|
||||
class AiohttpResp:
|
||||
"""
|
||||
重写返回类型。
|
||||
"""
|
||||
def __init__(self, text: str, content: bytes, status_code: int):
|
||||
"""
|
||||
Args:
|
||||
text (str): 网页内容
|
||||
content (bytes): 文件内容
|
||||
status_code (int): 网页状态码
|
||||
"""
|
||||
self.text = text
|
||||
self.content = content
|
||||
self.status_code = status_code
|
||||
|
||||
def json(self):
|
||||
return loads_json(self.text)
|
||||
|
||||
|
||||
def lang(text: str) -> str:
|
||||
@ -203,7 +228,100 @@ async def admin_check(event):
|
||||
except UserNotParticipantError:
|
||||
return False
|
||||
if isinstance(
|
||||
perms.participant, (ChannelParticipantAdmin, ChannelParticipantCreator)
|
||||
perms.participant, (ChannelParticipantAdmin, ChannelParticipantCreator)
|
||||
):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
async def request(method: str,
|
||||
url: str,
|
||||
params: dict = None,
|
||||
data: Any = None,
|
||||
json_body: bool = False,
|
||||
timeout: int = 10,
|
||||
**kwargs) -> AiohttpResp:
|
||||
"""
|
||||
原始网络请求封装。
|
||||
Args:
|
||||
method (str) : 请求方法。
|
||||
url (str) : 请求 URL。
|
||||
params (dict, optional) : 请求参数。
|
||||
data (Any, optional) : 请求载荷。
|
||||
json_body (bool, optional) : 载荷是否为 JSON
|
||||
timeout (int, optional) : 超时时间
|
||||
Returns:
|
||||
返回 aiohttp 请求对象
|
||||
"""
|
||||
method = method.upper()
|
||||
|
||||
# 使用自定义 UA
|
||||
DEFAULT_HEADERS = {
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
|
||||
}
|
||||
headers = DEFAULT_HEADERS
|
||||
|
||||
if params is None:
|
||||
params = {}
|
||||
|
||||
# 合并参数
|
||||
config_ = {
|
||||
"method": method,
|
||||
"url": url,
|
||||
"params": params,
|
||||
"data": data,
|
||||
"headers": headers,
|
||||
}
|
||||
# 支持自定义参数
|
||||
config_.update(kwargs)
|
||||
|
||||
if json_body:
|
||||
config_["headers"]["Content-Type"] = "application/json"
|
||||
config_["data"] = dumps_json(config_["data"])
|
||||
# 如果用户提供代理则设置代理
|
||||
if not proxy_addr == '' and not proxy_port == '':
|
||||
config_["proxy"] = f"socks5://{proxy_addr}:{proxy_port}"
|
||||
elif not http_addr == '' and not http_port == '':
|
||||
config_["proxy"] = f"http://{http_addr}:{http_port}"
|
||||
session = aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=timeout))
|
||||
resp = await session.request(**config_)
|
||||
# 返回请求
|
||||
resp_data = await resp.text()
|
||||
content = await resp.content.read()
|
||||
status_code = resp.status
|
||||
await session.close()
|
||||
return AiohttpResp(resp_data, content, status_code)
|
||||
|
||||
|
||||
async def get(url: str, timeout: int = 10, **kwargs) -> AiohttpResp:
|
||||
"""
|
||||
GET 请求封装
|
||||
Args:
|
||||
url (str) : 请求 URL。
|
||||
timeout (int, optional) : 超时时间
|
||||
Returns:
|
||||
返回 aiohttp 请求对象
|
||||
:rtype :aiohttp.client_reqrep.ClientResponse
|
||||
"""
|
||||
return await request("GET", url, timeout=timeout, **kwargs)
|
||||
|
||||
|
||||
async def post(url: str,
|
||||
params: dict = None,
|
||||
data: Any = None,
|
||||
json_body: bool = False,
|
||||
timeout: int = 10,
|
||||
**kwargs) -> AiohttpResp:
|
||||
"""
|
||||
POST 请求封装
|
||||
Args:
|
||||
url (str) : 请求 URL。
|
||||
params (dict, optional) : 请求参数。
|
||||
data (Any, optional) : 请求载荷。
|
||||
json_body (bool, optional) : 载荷是否为 JSON
|
||||
timeout (int, optional) : 超时时间
|
||||
Returns:
|
||||
返回 aiohttp 请求对象
|
||||
:rtype :aiohttp.client_reqrep.ClientResponse
|
||||
"""
|
||||
return await request("POST", url, params, data, json_body, timeout, **kwargs)
|
||||
|
@ -9,6 +9,7 @@ PyYAML>=5.4.1
|
||||
redis>=3.5.3
|
||||
coloredlogs>=15.0.1
|
||||
requests[socks]>=2.25.1
|
||||
aiohttp>=3.8.1
|
||||
pytz>=2021.1
|
||||
cowpy>=1.1.0
|
||||
googletrans>=4.0.0-rc1
|
||||
|
2
setup.py
2
setup.py
@ -18,7 +18,7 @@ setup(
|
||||
description="A telegram utility daemon and plugin framework.",
|
||||
long_description=long_description,
|
||||
long_description_content_type="text/markdown",
|
||||
url="https://github.com/xtaodada/PagerMaid-Modify",
|
||||
url="https://github.com/Xtao-Labs/PagerMaid-Modify",
|
||||
packages=find_packages(),
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
|
Loading…
Reference in New Issue
Block a user