Хотел создать бота по пробиву номера ,но когда вводишь номер в бота питон начинает читать файлы (базу данных) в excel и выдает ошибку при чтении
вот код:
вот код:
Python:
import os
import re
import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# Настройка логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
# Функция для поиска телефонного номера
def search_phone_number(phone_number: str, directory: str):
results = []
found = False
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
try:
with open(file_path, 'r', encoding='utf-16') as f:
for line_number, line in enumerate(f, start=1):
if phone_number in line:
found = True
result_entry = f"Номер найден в файле: {file_path}, строка {line_number}: {line.strip()}\n"
results.append(result_entry)
except Exception as e:
logger.error(f"Ошибка при чтении файла {file_path}: {e}")
continue
if not found:
results.append("Номер не найден.")
return results
# Команда /start
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text("Привет! Введите номер телефона для поиска.")
# Обработка текстовых сообщений
def handle_message(update: Update, context: CallbackContext) -> None:
phone_number = update.message.text.strip()
# Проверка на валидность номера (пример для формата +1234567890)
if not re.match(r'^\+\d{10,15}$', phone_number):
update.message.reply_text("Пожалуйста, введите корректный номер телефона в формате +1234567890.")
return
directory = os.getcwd() # Используем текущую директорию
results = search_phone_number(phone_number, directory)
# Отправляем результаты пользователю
update.message.reply_text("\n".join(results))
def main():
# Вставьте сюда ваш токен
TOKEN = '7863337513:AAHFHRMdl-MFCQNXqemUvz0HEagc43QvWvo'
updater = Updater(TOKEN)
# Получаем диспетчер для регистрации обработчиков
dispatcher = updater.dispatcher
# Обработка команд
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message))
# Запуск бота
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()