1. Создать бота в Telegram через BotFather и получить его API токен.
2. Настроить доступ к Google Sheets API и получить необходимые учетные данные для авторизации.
3. Написать код на Python, использующий библиотеку `telebot` для Telegram бота и библиотеку `gspread` для работы с Google Sheets.
Шаг 1: Создание бота в Telegram
Обратитесь к @BotFather в Telegram и следуйте инструкциям для создания нового бота. Запишите токен, который вам выдадут.
Шаг 2: Настройка Google Sheets API
1. Перейдите в [Google Developers Console](https://console.developers.google.com/).
2. Создайте новый проект.
3. Включите Google Sheets API для этого проекта.
4. Создайте учетные данные для доступа к API, выбрав сервисный аккаунт.
5. Скачайте JSON файл с учетными данными.
6. Поделитесь своей таблицей с электронным адресом сервисного аккаунта.
Шаг 3: Код Telegram бота с поиском в Google Sheets
Для работы с ботом используем библиотеку `pyTelegramBotAPI`, а для доступа к таблицам – `gspread`. Установите их при помощи pip:
pip install pyTelegramBotAPI gspread oauth2client
Теперь вы готовы написать код бота. Сначала необходимо произвести авторизацию и получить доступ к таблице:
import telebot
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# Токен бота
bot_token = 'ВАШ_TELEGRAM_BOT_TOKEN'
bot = telebot.TeleBot(bot_token)
# Авторизация в Google Sheets
scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
"https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("path_to_your_credentials_file.json", scope)
client = gspread.authorize(creds)
sheet = client.open("название_гугл_таблицы").sheet1
# Функция поиска информации в таблице
def search_in_sheet(query):
# Получаем все записи из таблицы
records = sheet.get_all_records()
# Фильтруем записи по запросу
result = [record for record in records if query.lower() in str(record).lower()]
return result
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Вас приветствует бот поиска информации! Отправьте текст для поиска.")
# Обработчик текстовых сообщений
@bot.message_handler(content_types=['text'])
def handle_text(message):
bot.reply_to(message, "Ищем информацию...")
results = search_in_sheet(message.text)
response = "Результаты:\n" + "\n".join([str(result) for result in results]) if results else "Ничего не найдено."
bot.reply_to(message, response)
if __name__ == '__main__':
bot.polling(non_stop=True)