98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
|
|
import asyncio
|
|||
|
|
from urllib.parse import unquote
|
|||
|
|
|
|||
|
|
from telethon.tl.functions.channels import JoinChannelRequest
|
|||
|
|
from telethon.tl.functions.messages import RequestWebViewRequest
|
|||
|
|
from telethon import TelegramClient
|
|||
|
|
from telethon.tl.types import InputPeerUser
|
|||
|
|
|
|||
|
|
from models.tg_phone_devices import TgPhoneDevices
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def create_telegram_client(tg_info):
|
|||
|
|
"""
|
|||
|
|
创建并配置 Telegram 客户端
|
|||
|
|
"""
|
|||
|
|
client = TelegramClient(
|
|||
|
|
fr"C:\sessions\{tg_info.phone}",
|
|||
|
|
api_id=tg_info.api_id,
|
|||
|
|
api_hash=tg_info.api_hash,
|
|||
|
|
device_model=tg_info.device_model,
|
|||
|
|
system_version=tg_info.system_version,
|
|||
|
|
app_version=tg_info.app_version,
|
|||
|
|
system_lang_code=tg_info.system_lang_code,
|
|||
|
|
lang_code=tg_info.lang_code,
|
|||
|
|
)
|
|||
|
|
return client
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def get_token(client):
|
|||
|
|
# 调用 RequestAppWebView,传递所需的参数
|
|||
|
|
bot_name_lst = [
|
|||
|
|
# "BlumCryptoBot",
|
|||
|
|
# 'DepinSimBot'
|
|||
|
|
# 'OfficialBananaBot',
|
|||
|
|
"tomowalletbot"
|
|||
|
|
]
|
|||
|
|
for bot_name in bot_name_lst:
|
|||
|
|
# bot_name = "DepinSimBot"
|
|||
|
|
bot = await client.get_entity(bot_name)
|
|||
|
|
if bot_name == "DepinSimBot":
|
|||
|
|
channel_name = 'depinsim'
|
|||
|
|
|
|||
|
|
channel = await client.get_entity(channel_name)
|
|||
|
|
# 加入频道
|
|||
|
|
await client(JoinChannelRequest(channel))
|
|||
|
|
|
|||
|
|
# 发送消息(示例:开始对话)
|
|||
|
|
await client.send_message(bot, '/start')
|
|||
|
|
|
|||
|
|
peer = InputPeerUser(bot.id, bot.access_hash)
|
|||
|
|
web_view = await client(
|
|||
|
|
RequestWebViewRequest(
|
|||
|
|
peer=peer,
|
|||
|
|
bot=peer,
|
|||
|
|
platform='android',
|
|||
|
|
from_bot_menu=False,
|
|||
|
|
url='https://tomotg.tomo.inc/',
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
auth_url = web_view.url
|
|||
|
|
print(auth_url)
|
|||
|
|
query = unquote(string=unquote(string=auth_url.split('tgWebAppData=')[1].split('&tgWebAppVersion')[0]))
|
|||
|
|
print(query)
|
|||
|
|
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def set_link(client):
|
|||
|
|
# 检查用户是否已授权
|
|||
|
|
if await client.is_user_authorized():
|
|||
|
|
# 使用邀请码启动机器人对话
|
|||
|
|
# 'bot_username' 是机器人的用户名,通常以 'bot' 结尾
|
|||
|
|
# 'invite_code' 替换为你的邀请码,如果不需要邀请码则省略此参数
|
|||
|
|
bot_username = 'TimeFarmCryptoBot'
|
|||
|
|
invite_code = '1ll25QcyYLilP5NQF'
|
|||
|
|
# https://t.me/TimeFarmCryptoBot?start=1ll25QcyYLilP5NQF
|
|||
|
|
|
|||
|
|
await client.send_message(bot_username, f'/start {invite_code}')
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def main(tg_info):
|
|||
|
|
# 创建 Telegram 客户端
|
|||
|
|
client = await create_telegram_client(tg_info)
|
|||
|
|
|
|||
|
|
await client.connect()
|
|||
|
|
|
|||
|
|
await get_token(client)
|
|||
|
|
await client.disconnect()
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
tg_info = TgPhoneDevices().get_or_none(
|
|||
|
|
TgPhoneDevices.phone == "8617120751158",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
asyncio.run(main(tg_info))
|