#СайдентикаSchool
Способ и код интеграции платформы Tilda и Telegram, чтобы клиенты заказавшие доставку еды на дом могли отследить статус заказа
Для интеграции платформы Tilda и Telegram, чтобы клиенты могли отслеживать статус своего заказа, нужно выполнить следующие шаги:

  1. Создать бота в Telegram через BotFather и получить его API ключ. Для этого нужно открыть Telegram, найти BotFather и отправить ему сообщение "/newbot". Далее следуйте инструкциям, указывая имя бота и его username. После успешного создания бота вам будет выдан его API ключ, который нужно сохранить для дальнейшего использования.
  2. На платформе Tilda создать форму заказа с полями: имя, телефон, адрес, список блюд и комментарий. Для создания формы заказа на Tilda нужно перейти в редактор сайта и выбрать блок "Форма" из списка блоков. Далее нужно настроить поля формы в соответствии с требованиями заказа. Обычно это поля "Имя", "Телефон", "Адрес", "Список блюд" и "Комментарий". После настройки полей нужно опубликовать сайт.
  3. Создать скрипт на сервере, который будет принимать данные из формы заказа на Tilda. Для этого нужно выбрать язык программирования, который будет использоваться для написания скрипта. Можно использовать любой язык программирования, но для этого примера мы будем использовать язык Python. Необходимо создать скрипт на сервере, который будет принимать данные из формы заказа на Tilda и сохранять их в базу данных. Для этого можно использовать фреймворк Flask и библиотеку SQLAlchemy.
Пример кода для обработки запроса от формы заказа на сервере:

from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///orders.db'
db = SQLAlchemy(app)

class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    phone = db.Column(db.String(20), nullable=False)
    address = db.Column(db.String(120), nullable=False)
    items = db.Column(db.String(200), nullable=False)
    comment = db.Column(db.String(200))
    status = db.Column(db.String(20), nullable=False, default='Новый')

@app.route('/order', methods=['POST'])
def create_order():
    name = request.form['name']
    phone = request.form['phone']
    address = request.form['address']
    items = request.form['items']
    comment = request.form.get('comment', '')
    order = Order(name=name, phone=phone, address=address, items=items, comment=comment)
    db.session.add(order)
    db.session.commit()
    return 'Order successfully created!'

Использовать Telegram API и библиотеку python-telegram-bot для отправки сообщений о статусе заказа клиентам. Для отправки сообщений в Telegram мы будем использовать библиотеку python-telegram-bot. Для этого нужно установить ее на сервер и написать код, который будет отправлять сообщения о статусе заказа клиентам. В коде необходимо использовать API ключ бота и chat_id клиента, которые мы получили на шаге 1.
Пример кода отправки сообщения в Telegram:

import telegram

bot = telegram.Bot('YOUR_API_KEY')

def send_message(chat_id, text):
    bot.send_message(chat_id=chat_id, text=text)

# Отправка сообщения о статусе заказа
send_message('YOUR_CHAT_ID', 'Ваш заказ готовится к доставке')

Теперь в скрипте на сервере реализовать логику обновления статуса заказа и отправки соответствующего сообщения в Telegram. Для этого нужно написать код, который будет проверять статус заказа в базе данных и отправлять соответствующее сообщение в Telegram. Например, если статус заказа изменился на "Готовится к доставке", то нужно отправить сообщение "Ваш заказ готовится к доставке" в Telegram. Для обновления статуса заказа можно использовать триггеры базы данных или регулярно проверять статус заказов с определенной периодичностью.
Пример кода для обновления статуса заказа и отправки сообщения в Telegram:

import telegram

bot = telegram.Bot('YOUR_API_KEY')

def send_message(chat_id, text):
    bot.send_message(chat_id=chat_id, text=text)

def update_order_status(order_id, status):
    order = Order.query.filter_by(id=order_id).first()
    order.status = status
    db.session.commit()
    send_message(order.chat_id, f'Статус вашего заказа: {status}')

# Обработка изменения статуса заказа
update_order_status(1, 'В доставке')
Чтобы получить chat_id для каждого клиента, можно использовать метод getUpdates Telegram API. Для этого нужно написать код, который будет получать список всех сообщений от клиентов и извлекать из них chat_id. Это можно сделать, используя метод getUpdates Telegram API.
Метод getUpdates Telegram API.

import telegram

bot = telegram.Bot('YOUR_API_KEY')

def get_chat_id():
    updates = bot.getUpdates()
    chat_ids = set()
    for update in updates:
        chat_ids.add(update.message.chat_id)
    return chat_ids
Для удобства клиентов можно добавить кнопки в сообщения Telegram, позволяющие быстро изменять статус заказа. Для этого нужно использовать функцию reply_markup библиотеки python-telegram-bot. Например, можно добавить кнопки "Заказ подтвержден", "Заказ отправлен на доставку", "Заказ доставлен" и т.д.
Пример кода для отправки сообщения с кнопками в Telegram:

import telegram
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

bot = telegram.Bot('YOUR_API_KEY')

def send_message_with_buttons(chat_id, text, buttons):
    keyboard = [[InlineKeyboardButton(button_label, callback_data=button_callback)] for button_label, button_callback in buttons]
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.send_message(chat_id=chat_id, text=text, reply_markup=reply_markup)

# Отправка сообщения с кнопками
send_message_with_buttons('YOUR_CHAT_ID', 'Выберите статус заказа:', [('Заказ подтвержден', 'confirmed'), ('Заказ отправлен на доставку', 'shipped'), ('Заказ доставлен', 'delivered')])
Для обработки нажатий на кнопки в сообщениях Telegram можно использовать функцию callback_query_handler библиотеки python-telegram-bot. Например, если пользователь нажал на кнопку "Заказ подтвержден", то нужно обновить статус заказа в базе данных и отправить сообщение "Статус вашего заказа: подтвержден" в Telegram.
Пример кода для обработки нажатий на кнопки в сообщениях Telegram:

import telegram
from telegram.ext import CallbackQueryHandler

bot = telegram.Bot('YOUR_API_KEY')

def update_order_status_and_send_message(chat_id, order_id, status):
    order = Order.query.filter_by(id=order_id).first()
    order.status = status
    db.session.commit()
    bot.answer_callback_query(callback_query_id=chat_id)
    bot.send_message(chat_id=chat_id, text=f'Статус вашего заказа: {status}')

# Обработка нажатия на кнопки
def button_click_handler(update, context):
    chat_id = update.callback_query.message.chat_id
    order_id = ...
    status = ...
    update_order_status_and_send_message(chat_id, order_id, status)

dispatcher.add_handler(CallbackQueryHandler(button_click_handler))

После реализации интеграции, клиенты смогут отслеживать статус своего заказа, получая уведомления в Telegram и быстро изменяя его статус с помощью кнопок.
Made on
Tilda