turns-00022.parquet:39008
bfe2f50c1a8075613e28a91e
turn 1/7gpt-4o-2024-05-13EnglishRussia327 words
degenerate_repetitionAbsentFinal dense release
USER
У меня есть linux сервер и телеграм бот, хочу что бы при написании в телеграм бот фамилии выводилась информация ФИО почта и телефон. Если есть 2 человека с похожей фамилией то выводить всех. Или поиск по номеру телефона. Все это должно быть написанно на python
ASSISTANT
Конечно, вот пример того, как можно реализовать телеграм-бота, который будет искать информацию по фамилии и номеру телефона. Для этого вам понадобятся библиотеки `python-telegram-bot` и `python-dotenv` (если вы храните ваши токены в файле `.env` для безопасности).
В этом примере предполагается, что у вас есть база данных или какой-то источник данных в формате CSV или JSON, откуда вы будете извлекать информацию.
Установите необходимые библиотеки:
```sh
pip install python-telegram-bot python-dotenv pandas
```
Создайте файл `.env` и поместите в него ваш токен бота:
```
TOKEN=your_telegram_bot_token_here
```
Создайте CSV файл `data.csv` с данными:
```csv
last_name,first_name,middle_name,email,phone_number
Ivanov,Ivan,Ivanovich,ivanov@example.com,+123456789
Petrov,Petr,Petrovich,petrov@example.com,+987654321
Sidorov,Sid,Sidr,pieter@example.com,+222333444
```
Теперь создайте файл `bot.py` и напишите следующий код:
```python
import os
import pandas as pd
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# Загрузите токен из .env
load_dotenv()
TOKEN = os.getenv('TOKEN')
# Загрузите данные из CSV
data = pd.read_csv('data.csv')
# Функция обработки команд /start
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('Привет! Введите фамилию или номер телефона для поиска информации.')
# Функция поиска по фамилии или телефону
def search(update: Update, context: CallbackContext) -> None:
query = update.message.text.strip()
# Поиск по фамилии
result = data[data['last_name'].str.contains(query, case=False, na=False) | data['phone_number'].str.contains(query, na=False)]
if not result.empty:
response = ""
for _, row in result.iterrows():
response += f"ФИО: {row['last_name']} {row['first_name']} {row['middle_name']}\n"
response += f"Email: {row['email']}\n"
response += f"Телефон: {row['phone_number']}\n\n"
update.message.reply_text(response)
else:
update.message.reply_text('Информация не найдена.')
def main() -> None:
# Инициализация апдейтера и диспетчера
updater = Updater(TOKEN)
dispatcher = updater.dispatcher
# Команды и сообщения
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, search))
# Запуск бота
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
Запустите бота, выполнив:
```sh
python bot.py
```
Теперь ваш телеграм-бот готов к использованию. Он будет принимать фамилии или номера телефонов и возвращать соответствующую информацию.