Посмотрите код, подскажите, что в нём неправильно ?
Пытаюсь писать сам с помощью 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.')