Как сохранить сырые API запросы в телеграме в базу данных при использовании Python для создания ботов?

Как можно сохранить текст "hello", полученный от бота через ссылку <a href="https://api.telegram.org/bot/sendMessage?chat_id=&amp;text='hello" rel="nofollow">https://api.telegram.org/bot/sendMessage?chat_id=&amp;...</a>, в базе данных?
  • 27 июля 2024 г. 7:23
Ответы на вопрос 2
Для сохранения сырых API запросов в базе данных при использовании Python для создания ботов в Телеграме, можно использовать библиотеку для работы с базами данных, такую как SQLAlchemy, Peewee или Django ORM. 

Пример кода, который сохранит сырые API запросы в базу данных с использованием SQLAlchemy:

```python
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import json
from datetime import datetime

Base = declarative_base()

class TelegramRequest(Base):
    __tablename__ = 'telegram_requests'
    
    id = Column(Integer, primary_key=True)
    method = Column(String)
    params = Column(String)
    timestamp = Column(DateTime, default=datetime.now)

# Подключение к базе данных SQLite
engine = create_engine('sqlite:///telegram_requests.db')
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

# Пример сырого API запроса
raw_request = {
    'method': 'sendMessage',
    'params': {
        'chat_id': '123456789',
        'text': 'hello'
    }
}

# Сохранение сырого API запроса в базу данных
telegram_request = TelegramRequest(method=raw_request['method'], params=json.dumps(raw_request['params']))
session.add(telegram_request)
session.commit()

# Закрытие сессии
session.close()
```

Чтобы сохранить текст "hello", полученный от бота через API запрос, необходимо добавить дополнительную обработку ответа от сервера Телеграма. Например, можно распарсить ответ и сохранить текст в базу данных таким же образом как показано выше, используя полученный текст вместо "hello".

Надеюсь, это поможет вам сохранить сырые API запросы в базу данных при работе с ботами в Телеграме на Python!
Воспользуйтесь библиотекой Peewee: 

from database.models import History


@bot.message_handler(content_types=["text"])
def message_users(message) -> None:
    """Отслеживание текстовых сообщений пользователя"""
    if filter_unregistred_users(message):
        bot.reply_to(message, "Вы не можете писать сообщения. Зарегистрируйстсь, набрав команду /start")
        return
    text_msg = message.text.lower().replace("!", "").replace(".", "")
    if text_msg in ["привет", "приветик", "приветствую", "здрасьте", "здорова", "здравствуйте", "hello"]:
        bot.reply_to(message, "И я Вас горячо приветствую!")
    else:
        bot.reply_to(message, "Я Вас не понимаю! Мой A.I. весьма ограничен(")
   History.create(chat_id=message.chat.id,
                   user_name=message.chat.username,
                   date=str(datetime.now()),
                   command=message.text,
                   result="text message")

в этом примере ведется запись в БД (таблица History) сообщения пользователя.
Похожие вопросы