@nomatter69

Ошибка from telethon.network.connection import ConnectionTcpMTProxy при создании бота. Кто знает решение?

Посмотрите код, подскажите, что в нём неправильно ?
Пытаюсь писать сам с помощью AI, так сказать, учусь сам того не осознавая )

Ошибка:
/home/nepcuk/.local/lib/python3.10/site-packages/pytesseract/pytesseract.py:34: UserWarning: The NumPy module was reloaded (imported a second time). This can in some
 cases result in small but subtle issues and is discouraged.
  from numpy import ndarray
Traceback (most recent call last):
  File "/home/nepcuk/GeorgiaFinesBot.py", line 5, in <module>
    from telethon.network.connection import ConnectionTcpMTProxy
ImportError: cannot import name 'ConnectionTcpMTProxy' from 'telethon.network.connection' (/home/nepcuk/.local/lib/python3.10/site-packages/telethon/network/connecti
on/__init__.py)


Первая часть кода:
import logging
import pytesseract
from PIL import Image
from telethon import TelegramClient, events
from telethon.network.connection import ConnectionTcpMTProxy
from telethon.errors import FloodWaitError
import asyncio

# Конфигурация логирования
logging.basicConfig(level=logging.DEBUG)

# Токен API вашего бота
API_ID =***
API_HASH = '***'
BOT_TOKEN = '***'

# Конфигурация MTProto Proxy
proxy = {
    'proxy_type': 'mtproto',
    'addr': '149.154.167.50',
    'port': 443,
    'secret': '***'
}

client = TelegramClient(
    'GeorgiaFinesBot',
    API_ID,
    API_HASH,
    connection=ConnectionTcpMTProxy,
    proxy=proxy
)

# Функция для обработки ошибок подключения
async def main():
    try:
        await client.start(bot_token=BOT_TOKEN)
        print("Client successfully connected.")
    except FloodWaitError as e:
        print(f"Flood wait error: {e}")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == '__main__':
    asyncio.run(main())


# Путь до Tesseract OCR (установите свой путь)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

client = TelegramClient('GeorgiaFinesBot', API_ID, API_HASH).start(bot_token=BOT_TOKEN)

# Словарь для хранения информации о штрафах
existing_fines = {}

# Переменная для хранения текущего языка
current_language = 'en'  # По умолчанию английский

# Функция для получения информации о штрафах по номеру документа и номеру автомобиля
async def get_fines(document_number, car_number):
    url = 'https://videos.police.ge/?lang=en'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    # Парсинг данных о штрафах (замените селекторы на правильные)
    fines = soup.find_all('div', class_='fine-info')

    found_fines = []
    for fine in fines:
        # Извлечение данных о штрафе (замените селекторы на правильные)
        date_element = fine.find('span', class_='date')
        date = date_element.text if date_element else ''

        amount_element = fine.find('span', class_='amount')
        amount = amount_element.text if amount_element else ''

        fine_data = {
            'date': date,
            'amount': amount,
            # ... другие данные о штрафе
        }
        # Проверка, является ли штраф новым
        if fine_data not in existing_fines:
            found_fines.append(fine_data)

    return found_fines

# Функция для извлечения текста из изображения
def extract_text_from_image(image_file):
    image = Image.open(image_file)
    text = pytesseract.image_to_string(image)
    return text

# Функция для обновления данных о штрафах (мониторинг сайта)
async def update_fines():
    global existing_fines
    new_fines = await get_fines('Tech-passport number', 'Car state number')
    for fine in new_fines:
        # Добавление нового штрафа в словарь
        existing_fines[fine] = datetime.now()

# Функция для отправки уведомлений о новых штрафах
async def send_notification(chat_id, fines):
    for fine in fines:
        if current_language == 'ru':
            await client.send_message(chat_id, f'Новый штраф обнаружен:\nДата: {fine["date"]}\nСумма: {fine["amount"]}')
        elif current_language == 'ge':
            await client.send_message(chat_id, f'ახალი ჯარიმა აღმოჩენილია:\nთარიღი: {fine["date"]}\nთანხა: {fine["amount"]}')
        else:
            await client.send_message(chat_id, f'New fine found:\nDate: {fine["date"]}\nAmount: {fine["amount"]}')

# Обработчик команды /start
@client.on(events.NewMessage(pattern='/start'))
async def handler_start(event):
    await event.respond('Привет! Я бот Georgia Fines Bot.  Выберите язык:')
    await client.send_message(event.chat_id, '/language ru - Русский')
    await client.send_message(event.chat_id, '/language en - English')
    await client.send_message(event.chat_id, '/language ge - ქართული')

# Обработчик команды /language
@client.on(events.NewMessage(pattern='/language'))
async def handler_language(event):
    global current_language
    message = event.message.text.split()
    if len(message) != 2:
        await event.respond('Неправильный формат команды. Используйте /language [ru/en/ge].')
        return

    language = message[1].lower()
    if language in ['ru', 'en', 'ge']:
        current_language = language
        if current_language == 'ru':
            await event.respond(f'Язык изменен на {current_language}.')
        elif current_language == 'ge':
            await event.respond(f'ენა შეიცვალა {current_language}ად.')
        else:
            await event.respond(f'Language changed to {current_language}.')
    else:
        await event.respond('Неверный язык. Допустимые варианты: ru, en, ge.')
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы