telethon -> pyrogram

This commit is contained in:
hok7z 2022-08-13 15:25:52 +03:00
parent 6e59b1c860
commit f6e2653daf
10 changed files with 174 additions and 147 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ modules/__pycache__
.env .env
pyrightconfig.json pyrightconfig.json
session.session session.session
session.session-journal

9
app.py
View File

@ -4,8 +4,6 @@ from aiogram import executor
from database import models from database import models
from load import dp, bot from load import dp, bot
from load import loop,tgc
import handlers import handlers
import config import config
@ -27,10 +25,10 @@ async def on_startup(dp):
from utils.default_commands import set_default_commands from utils.default_commands import set_default_commands
await set_default_commands(dp) await set_default_commands(dp)
await bot.set_webhook(WEBHOOK_URL) from load import tgc
await tgc.client.start()
# Connect to client await bot.set_webhook(WEBHOOK_URL)
await tgc._connect()
async def on_shutdown(dp): async def on_shutdown(dp):
await bot.delete_webhook() await bot.delete_webhook()
@ -48,7 +46,6 @@ def main() -> None:
webhook_path=WEBHOOK_PATH, webhook_path=WEBHOOK_PATH,
on_startup=on_startup, on_startup=on_startup,
on_shutdown=on_shutdown, on_shutdown=on_shutdown,
loop = loop,
skip_updates=True, skip_updates=True,
host=WEBAPP_HOST, host=WEBAPP_HOST,
port=WEBAPP_PORT, port=WEBAPP_PORT,

View File

@ -15,7 +15,7 @@ group_id = env.str("group_id")
telegram_log_chat_id = env.str("log_group_id") telegram_log_chat_id = env.str("log_group_id")
# Telegram Application # Telegram Application
api_id = env.str("api_id") api_id = env.int("api_id")
api_hash = env.str("api_hash") api_hash = env.str("api_hash")
# Virus Total API # Virus Total API

View File

@ -13,9 +13,6 @@ import json
from dataclasses import dataclass from dataclasses import dataclass
# TODO:Automatic malware checking with VirusTotal(add skipping queue virustotal report)
# vt = utils.VirusTotalAPI(config.vt_api,True)
def getArgument(arguments:list,index:int=0) -> str | None: def getArgument(arguments:list,index:int=0) -> str | None:
""" Get element from a list.If element not exist return None """ """ Get element from a list.If element not exist return None """
if not (arguments): if not (arguments):

10
load.py
View File

@ -1,5 +1,3 @@
import asyncio
from aiogram import Bot, Dispatcher from aiogram import Bot, Dispatcher
from aiogram import types from aiogram import types
from aiogram.bot.api import TelegramAPIServer from aiogram.bot.api import TelegramAPIServer
@ -14,16 +12,14 @@ from database.database import Database
database = Database() database = Database()
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
storage = MemoryStorage() storage = MemoryStorage()
tgc = utils.TelegramClientScrapper(config.api_id, config.api_hash, token=config.token, loop = loop) # Create client connection
tgc = utils.TelegramClient(config.api_id, config.api_hash, config.token)
bot = Bot( bot = Bot(
token=config.token, token=config.token,
server=TelegramAPIServer.from_base(config.telegram_api_server) server=TelegramAPIServer.from_base(config.telegram_api_server),
) )
dp = Dispatcher(bot, storage=storage) dp = Dispatcher(bot, storage=storage)

135
poetry.lock generated
View File

@ -211,14 +211,6 @@ category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
[[package]]
name = "pyasn1"
version = "0.4.8"
description = "ASN.1 types and codecs"
category = "main"
optional = false
python-versions = "*"
[[package]] [[package]]
name = "pygments" name = "pygments"
version = "2.12.0" version = "2.12.0"
@ -238,6 +230,26 @@ python-versions = ">=3.6.8"
[package.extras] [package.extras]
diagrams = ["railroad-diagrams", "jinja2"] diagrams = ["railroad-diagrams", "jinja2"]
[[package]]
name = "pyrogram"
version = "2.0.38"
description = "Elegant, modern and asynchronous Telegram MTProto API framework in Python for users and bots"
category = "main"
optional = false
python-versions = "~=3.7"
[package.dependencies]
pyaes = "1.6.1"
pysocks = "1.7.1"
[[package]]
name = "pysocks"
version = "1.7.1"
description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]] [[package]]
name = "python-dotenv" name = "python-dotenv"
version = "0.20.0" version = "0.20.0"
@ -291,30 +303,12 @@ pygments = ">=2.6.0,<3.0.0"
jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
[[package]] [[package]]
name = "rsa" name = "tgcrypto"
version = "4.9" version = "1.2.3"
description = "Pure-Python RSA implementation" description = "Fast and Portable Cryptography Extension Library for Pyrogram"
category = "main" category = "main"
optional = false optional = false
python-versions = ">=3.6,<4" python-versions = "~=3.6"
[package.dependencies]
pyasn1 = ">=0.1.3"
[[package]]
name = "telethon"
version = "1.24.0"
description = "Full-featured Telegram client library for Python 3"
category = "main"
optional = false
python-versions = ">=3.5"
[package.dependencies]
pyaes = "*"
rsa = "*"
[package.extras]
cryptg = ["cryptg"]
[[package]] [[package]]
name = "urllib3" name = "urllib3"
@ -344,7 +338,7 @@ multidict = ">=4.0"
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.10" python-versions = "^3.10"
content-hash = "cf2aa8bebb164e8dbd85f9e22232813ccaf44fdcd786cb900b459b0feeb738d6" content-hash = "abbbb4c7a6ec7a235de1f0c3665aaca3b29bdf4e563e8bdbf75f23009d8bc878"
[metadata.files] [metadata.files]
aiogram = [ aiogram = [
@ -602,21 +596,6 @@ psycopg2 = [
pyaes = [ pyaes = [
{file = "pyaes-1.6.1.tar.gz", hash = "sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f"}, {file = "pyaes-1.6.1.tar.gz", hash = "sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f"},
] ]
pyasn1 = [
{file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"},
{file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"},
{file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"},
{file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"},
{file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"},
{file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"},
{file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"},
{file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"},
{file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"},
{file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"},
{file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"},
{file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"},
{file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"},
]
pygments = [ pygments = [
{file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
@ -625,6 +604,15 @@ pyparsing = [
{file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
] ]
pyrogram = [
{file = "Pyrogram-2.0.38-py3-none-any.whl", hash = "sha256:fb4af2a2f70526bc07e7d5b0aae57c7fb5c47ee38df483fca1d76064c6a3e038"},
{file = "Pyrogram-2.0.38.tar.gz", hash = "sha256:bc46516ed5c000c0c3a4c653045c849bc07d5f4959c27f6f053550ace5152835"},
]
pysocks = [
{file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
{file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"},
{file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"},
]
python-dotenv = [ python-dotenv = [
{file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"}, {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"},
{file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"}, {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"},
@ -638,10 +626,57 @@ requests = [
{file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
] ]
rich = [] rich = []
rsa = [] tgcrypto = [
telethon = [ {file = "TgCrypto-1.2.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:266cfc47dde87e23421b2ee50cbb066ec4b8c294553f79742e3d694af5c0d118"},
{file = "Telethon-1.24.0-py3-none-any.whl", hash = "sha256:04fdc5fa4ed3e886e6ecf4bad79205ab8880c6aefbd42c29c89c689a502aa816"}, {file = "TgCrypto-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab3f759180b17d252dd57f018dff9190dc0e96e5ff3aeb90b598e2ab2f81f57e"},
{file = "Telethon-1.24.0.tar.gz", hash = "sha256:818cb61281ed3f75ba4da9b68cb69486bed9474d2db4e0aa16e482053117452c"}, {file = "TgCrypto-1.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f69a8a73c37f99bc265df5e071f0506e2815d001362f117c6f7db13c9a1859e"},
{file = "TgCrypto-1.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f0b1f75533b01c4109ee332e48d9f6734fb286cebe8385c8b1393ba183b693"},
{file = "TgCrypto-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9f9ba1ec042430539a895377f18260dd9833a8eacb52121457756bb26419d"},
{file = "TgCrypto-1.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:af738c072d721eb8a0d39b0d6140193c0e848f6cb34071ff573b4dd5c094b499"},
{file = "TgCrypto-1.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9f0a07a7112fcdc1c5c84a3b72de4c2d96ef45edc51e542bd7f998b2305b74c8"},
{file = "TgCrypto-1.2.3-cp310-cp310-win32.whl", hash = "sha256:d58bd811d1a533cbe0e10677152c75edee01b9c893edea6e455678dbf271313f"},
{file = "TgCrypto-1.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:8e29b62061bc97f1de5176f2c91891b0c614b0de6b1999a0a477faaa61159748"},
{file = "TgCrypto-1.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7ccb42db80af53d109753be139bb7f6b9cf9e6281e847619860964a8a7edf019"},
{file = "TgCrypto-1.2.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2d5cfdf06eabfdc3027257cc28ce3d42922644f33f523308e69644af5843c4"},
{file = "TgCrypto-1.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adcc983f85812892f77fed9c96a9751b4c18e63cd5b8ea76836f778304d7a9db"},
{file = "TgCrypto-1.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:307035717383ea256d1c629675610f007d127d67ef786e0055a127b53f6fa589"},
{file = "TgCrypto-1.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:281672bfb51b3e30be1a0f29717007d0e815c323afe5c802f07e551099934e62"},
{file = "TgCrypto-1.2.3-cp36-cp36m-win32.whl", hash = "sha256:438316dc58ef75bb5f7f2e4521e942c3e797966b7262d0b5880bf84c59c2ba48"},
{file = "TgCrypto-1.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:c385a651f83f710fba150f8fba8774cfd0b2c234123de747c486cf46f8d182f6"},
{file = "TgCrypto-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:84932e93b6582a4abc8c64dd4b94a3b903d946f1d4ea4cbb7fe6bc1d49e7620a"},
{file = "TgCrypto-1.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97ced03b6fc66fd6074e07e90411ad2fb85d18f6110f5947ce29d5390f325b3e"},
{file = "TgCrypto-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c2dcd16acd9a25ab9e6f83eb93fdeb8c3d892c76cd8157a75a045a343f5c98d"},
{file = "TgCrypto-1.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3b0628dea2e06f59315ec373902f7b1b6562abba0e82c60d6843648bf1311e4b"},
{file = "TgCrypto-1.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:90cf802e42fa187fbb3fb4de23b5c8b0a7bff946c2a6be31ff6b37254b00f254"},
{file = "TgCrypto-1.2.3-cp37-cp37m-win32.whl", hash = "sha256:ba1976374a7b72c12f51eb3efcf291c56cc316eebfaea9c5db0c98c5fc149c33"},
{file = "TgCrypto-1.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:bf553cc9088c7b6c502cbaa495d7c0b8ae035c56ff77e6c932efd2415ee13532"},
{file = "TgCrypto-1.2.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c0efdf3d38320ddaafa145da1b2fce2abbdb9fc32d94538e2782e41da57ffe53"},
{file = "TgCrypto-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6e0ec261992ddb50081fbf2094ce6eaf97d880717b0e100caf74783cca317799"},
{file = "TgCrypto-1.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5c0b5d6d1e6133e4ce283228df22c83ff5f760a169075eac1c493194462038c7"},
{file = "TgCrypto-1.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a036ad285536723540f4071a3f23d312104dc728906dfafd9bba0ca5c8ebfb6"},
{file = "TgCrypto-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d5f139da89e4bfaca3b7667fe889fb1c14c818f85e3ef3f029d16575ac10b83"},
{file = "TgCrypto-1.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f549f1164de67548327593362ae4f94435510b6d1c194e5579d3f0379f91bb71"},
{file = "TgCrypto-1.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8aef7d1d88fe051dae5a9a331e78e27f031a7290bed5d5f4f07a440e9d836bbb"},
{file = "TgCrypto-1.2.3-cp38-cp38-win32.whl", hash = "sha256:2a6ae87e32f5e94494eb37af29fd4e9d9560752f701922614b03fc6b2e6b9011"},
{file = "TgCrypto-1.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:056845a5e368d6e4e94b2b773ab0529dd5d5d65b04dc1fa051f63be7ff7e7a3a"},
{file = "TgCrypto-1.2.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:17bd13f6c99a784f43fbcd410a80c18f078dadea71d049718caf255f6510895f"},
{file = "TgCrypto-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8536befb9bf952bf986e83d02fbebd65f6465b574d8ed3f3456c3e97ccd9122a"},
{file = "TgCrypto-1.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:268ad4b8a8e5b5e6b13435d0d57b91ccb4a2af9e1c893b014ea42f1b43b1966c"},
{file = "TgCrypto-1.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0106d780ca971f00376e28ccc3f4d45a29665f3cbe2b7b118141ecd85fe4c2d"},
{file = "TgCrypto-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:148fc9c40fdbd059655062c1eec612f8ace2d6d2a9158016472771ef04b06599"},
{file = "TgCrypto-1.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42caf6e96742e8bce1a66bf7c6d48832ea1617f0a165e1c767ccde9d1889ba0f"},
{file = "TgCrypto-1.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8d44117d9e57fc15425517fb363bd8757c2340b1fce464b1bef3dd69d828ed60"},
{file = "TgCrypto-1.2.3-cp39-cp39-win32.whl", hash = "sha256:3199d2666f00bffd6c373190bc0f8153a7de1bf00da2cc585c877bb43a57b8d9"},
{file = "TgCrypto-1.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:fdba12358104453fef2b9f46ae7e364eadd8f857cd39ab6ab94a94bd4b246efc"},
{file = "TgCrypto-1.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d2ccda26a5f3377242f926a88b65d46c4b5b7d515304ceaefc39543b3ee5fdc8"},
{file = "TgCrypto-1.2.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bd38f118732c5ebc43fab7cd20ea4f53d0e2367a86169d22af98c2bca9bf8aa"},
{file = "TgCrypto-1.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:064caf3b1fdb7b923271130416fe6b2ab1ba695db83375011f39f49df3af202c"},
{file = "TgCrypto-1.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:76d038ae370bef184d7ece6505573857f1229cb8ef54b93def820734d4baa3d8"},
{file = "TgCrypto-1.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dde446012dd5395efdce266a4c25267217586f0296981385e79774dd60c69df1"},
{file = "TgCrypto-1.2.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5857bdd18359fda4680f2557b12e32e911ae08a1651e241c76d37130bf7e8bef"},
{file = "TgCrypto-1.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8adabe5b55e78882a81d2a1aa8248ecb2767dc7305dde5f241e5e80208c8328c"},
{file = "TgCrypto-1.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8515d2f54d02937f40bb169ad733a9b7e9ba360d1fdef0c3d396af433c1ce474"},
{file = "TgCrypto-1.2.3.tar.gz", hash = "sha256:87a7f4c722972645f20ec140499bf71672ba921d4ae85b33d3a7ab96c7c9d1b4"},
] ]
urllib3 = [] urllib3 = []
yarl = [ yarl = [

View File

@ -12,9 +12,10 @@ peewee = "^3.14.10"
rich = "^12.4.4" rich = "^12.4.4"
environs = "^9.5.0" environs = "^9.5.0"
requests = "^2.27.1" requests = "^2.27.1"
Telethon = "^1.24.0"
psycopg2 = "^2.9.3" psycopg2 = "^2.9.3"
aioschedule = "^0.5.2" aioschedule = "^0.5.2"
Pyrogram = "^2.0.38"
TgCrypto = "^1.2.3"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]

View File

@ -3,7 +3,7 @@ from .default_commands import set_default_commands
from .update_user_data import check_user_data from .update_user_data import check_user_data
from .telegram_client import TelegramClientScrapper from .telegram_client import TelegramClient
from .parse_timedelta import parse_timedelta from .parse_timedelta import parse_timedelta
from .virustotal import VirusTotalAPI from .virustotal import VirusTotalAPI

View File

@ -1,61 +1,37 @@
from telethon import TelegramClient from pyrogram.client import Client
from telethon.errors import SessionPasswordNeededError
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch
from telethon.tl.types import PeerChannel
class TelegramClient:
class TelegramClientScrapper: def __init__(self,api_id,api_hash,token):
def __init__(self, api_id, api_hash, phone=None, token=None, loop=None):
self.api_id = api_id self.api_id = api_id
self.api_hash = api_hash self.api_hash = api_hash
self.phone = phone
self.loop = loop
self.token = token self.token = token
async def _connect(self): self.client = Client("session",
self.client = TelegramClient("session", self.api_id, self.api_hash, loop=self.loop) api_id=self.api_id,api_hash=self.api_hash,
await self.client.start(bot_token=self.token) bot_token=self.token
if not await self.client.is_user_authorized(): )
await self.client.send_code_request(self.phone)
async def members_list(self,chat_id:int):
members = []
async for member in self.client.get_chat_members(chat_id):
try: try:
await self.client.sign_in(self.phone, input("Enter you just recieved:")) username = member.user.username
except SessionPasswordNeededError: except AttributeError:
await self.client.sign_in(password=input("Enter password:")) username = None
async def get_group_users(self, group_id): if not (username is None):
username = f"@{username}"
chat_entity = PeerChannel(int(group_id)) if (not member.user.is_bot):
offset = 0 members.append({
limit = 100 "id":member.user.id,
list_participants = [] "status":str(member.status),
"first_name":member.user.first_name,
"username":username,
while True:
participants = await self.client(GetParticipantsRequest(
chat_entity, ChannelParticipantsSearch(''), offset, limit,
hash=0
))
if (not participants.users):
break
list_participants.extend(participants.users)
offset += len(participants.users)
participants_details = []
for participant in list_participants:
is_bot = participant.bot
user_name = participant.username
if (user_name):
user_name = f"@{user_name}"
if (not is_bot):
participants_details.append({
"id": participant.id,
"first_name": participant.first_name,
"user_name":user_name
}) })
return participants_details return members

View File

@ -1,37 +1,61 @@
from database.models import Member from database.models import Member
from config import group_id from config import group_id
async def __is_group_owner(user_id): # async def __is_group_owner(user_id):
from load import bot # from load import bot
member = await bot.get_chat_member(group_id,user_id) # member = await bot.get_chat_member(group_id,user_id)
return member.is_chat_owner() # return member.is_chat_owner()
async def check_user_data(): async def check_user_data():
"""Check user data in database and update it""" """Check user data in database and update it"""
from load import tgc,database from load import tgc,database
users = await tgc.get_group_users(group_id)
for user in users: members = await tgc.members_list(group_id)
user_exists = database.check_data_exists(Member.user_id,user["id"])
for member in members:
exists = database.check_data_exists(Member.user_id,member["id"])
role = "member" role = "member"
if (await __is_group_owner(user["id"])):role = "owner" if (member["status"] == "ChatMemberStatus.OWNER"):
role = "owner"
if (not user_exists):
user_name = user["user_name"]
if (user_name):
user_name = f"@{user_name}"
if (not exists):
database.register_user( database.register_user(
user["id"], member["id"],member["first_name"],
user["first_name"], member["username"],role
user["user_name"],
role,
) )
else: else:
database.update_member_data(user["id"], database.update_member_data(
member["id"],
[Member.first_name,Member.user_name], [Member.first_name,Member.user_name],
[user["first_name",user["user_name"]]] [member["first_name"],member["username"]]
) )
# async def check_user_data():
# """Check user data in database and update it"""
# from load import tgc,database
# users = await tgc.get_group_users(group_id)
#
# for user in users:
# user_exists = database.check_data_exists(Member.user_id,user["id"])
#
# role = "member"
# if (await __is_group_owner(user["id"])):role = "owner"
#
# if (not user_exists):
# user_name = user["user_name"]
#
# if (user_name):
# user_name = f"@{user_name}"
#
# database.register_user(
# user["id"],
# user["first_name"],
# user["user_name"],
# role,
# )
#
# else:
# database.update_member_data(user["id"],
# [Member.first_name,Member.user_name],
# [user["first_name",user["user_name"]]]
# )