Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 14, 2024 23:10:18

Fish228335
Зарегистрирован: 2024-06-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Срочно решение задачи на Python

import asyncio
import logging
import os
import random
import hashlib
from tkinter import Tk, Label, Button, filedialog, simpledialog
import pandas as pd
from telethon import TelegramClient, functions, types
from telethon.errors import UsernameNotOccupiedError, RPCError

# Настройка логирования
log_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ‘call_logs.txt’)
logging.basicConfig(
filename=log_file_path,
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)

# Замените эти значения на свои API ID и API Hash
api_id = ‘26549401’
api_hash = ‘0c541cee86f1f9bf9a53a0e1705994a4’
phone_number = ‘+375336401618’ # Ваш номер телефона

client = TelegramClient('session_name', api_id, api_hash)

class App:
def __init__(self, root):
self.root = root
self.root.title(“Telegram Caller”)

self.label = Label(root, text=“Выберите файл с юзернеймами:”)
self.label.pack(pady=10)

self.button = Button(root, text=“Выбрать файл”, command=self.load_file)
self.button.pack(pady=5)

self.call_button = Button(root, text=“Начать звонки”, command=self.start_calls, state=“disabled”)
self.call_button.pack(pady=5)

self.file_path = None
self.call_duration = 30 # Время дозвона в секундах
self.delay_between_calls = 5 # Задержка между звонками в секундах
self.pause_after_answer = 5 # Пауза после ответа (в секундах)

# Создаем папку для записи звонков
if not os.path.exists('call_records'):
os.mkdir('call_records')

def load_file(self):
self.file_path = filedialog.askopenfilename(
filetypes=
)
if self.file_path:
self.label.config(text=f“Файл выбран: {self.file_path}”)
self.call_button.config(state=“normal”)

def start_calls(self):
if self.file_path:
self.root.destroy()
asyncio.run(self.make_calls())

async def make_calls(self):
try:
await client.start()

if not await client.is_user_authorized():
code = simpledialog.askstring(“Авторизация”, “Введите код, полученный по SMS:”)
await client.sign_in(phone_number, code)

logging.info(“Авторизация успешна. Начало чтения файла…”)
df = pd.read_excel(self.file_path)

# Проверяем наличие столбца ‘username’
if ‘username’ not in df.columns:
logging.error(“Файл не содержит столбца ‘username’”)
return

usernames = df.tolist()
logging.info(f“Количество юзернеймов для обзвона: {len(usernames)}”)

for username in usernames:
if not client.is_connected():
logging.warning(“Переподключение к Telegram…”)
await client.connect()

logging.info(f“Попытка звонка: {username}”)
call_status = “failed”
try:
user = await client.get_input_entity(username)

# Генерация g_a_hash
g_a_hash = hashlib.sha256(os.urandom(16)).digest()

# Отправка запроса на звонок
await client(functions.phone.RequestCallRequest(
user_id=user,
random_id=random.randint(0, 0x7fffffff),
g_a_hash=g_a_hash,
protocol=types.PhoneCallProtocol(
udp_p2p=True,
udp_reflector=True,
min_layer=170,
max_layer=170,
library_versions=
),
video=False # Можно установить True для видеозвонка
))

logging.info(f'Звонок совершен {username}')
call_status = “initiated”

# Удержание соединения на заданное время
await asyncio.sleep(self.call_duration)

except UsernameNotOccupiedError as e:
logging.error(f'Некорректный username: {username} ({e})')
except RPCError as e:
logging.error(f'Ошибка при звонке {username}: {e}')
except Exception as e:
logging.error(f'Не удалось позвонить {username}: {e}')
finally:
logging.info(f'Звонок завершен {username}')
await asyncio.sleep(self.delay_between_calls)

logging.info(“Все звонки завершены.”)
except Exception as e:
logging.error(f“Ошибка при выполнении звонков: {e}”)
finally:
if client.is_connected():
await client.disconnect()
logging.info(“Отключение от Telegram…”)
logging.info(“Приложение завершено.”)

if __name__ == “__main__”:
logging.info(“Запуск приложения…”)
root = Tk()
app = App(root)
root.mainloop()


вот мой код, когда я его запускаю и выбираю таблицу со столбиком username то код совершает поочереди звонок каждому пользователю, это работает хорошо. Но вот как только челоек поднимает трубку на мой звонок - он сразу же сбрасывается

Прикреплённый файлы:
attachment Script.py (5,8 KБ)

Офлайн

#2 Июнь 15, 2024 11:22:00

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Срочно решение задачи на Python

и это прекрасно



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version