Для объединения функциональности телеграм бота, базы данных и возможности отправки запросов к внешнему API из одного процесса, можно использовать фреймворк FastAPI. FastAPI позволяет создать RESTful API, который может обрабатывать запросы к базе данных и внешнему API, а также взаимодействовать с телеграм ботом.
Пример реализации с использованием FastAPI:
```python
from fastapi import FastAPI
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.utils import executor
import asyncio
# Инициализация FastAPI
app = FastAPI()
# Инициализация базы данных
# (здесь можно использовать, например, SQLAlchemy)
# Инициализация телеграм бота
bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())
# Обработка запросов к внешнему API
@app.get("/external_api")
async def external_api():
# Здесь можно выполнить запрос к внешнему API
return {"message": "Response from external API"}
# Обработка запросов к базе данных
@app.get("/database")
async def database():
# Здесь можно выполнить запрос к базе данных
return {"message": "Response from database"}
# Отправка сообщений в телеграм
@app.get("/send_message")
async def send_message(message: str):
await bot.send_message(chat_id="YOUR_CHAT_ID", text=message)
return {"message": "Message sent"}
# Обработка сообщений от телеграм бота
@dp.message_handler()
async def echo(message: types.Message):
await message.answer(message.text)
# Запуск телеграм бота
async def on_startup(dp):
await dp.start_polling()
# Запуск FastAPI и телеграм бота
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.create_task(on_startup(dp))
executor.start_polling(dp, skip_updates=True)
uvicorn.run(app, host="0.0.0.0", port=8000)
```
В этом примере FastAPI используется для создания веб-сервера, который обрабатывает запросы к внешнему API и базе данных. Телеграм бот обрабатывает сообщения от пользователей и отправляет сообщения. Все это происходит в одном процессе.
Для запуска данного примера необходимо установить библиотеки fastapi, aiogram и uvicorn:
```bash
pip install fastapi
pip install aiogram
pip install uvicorn
```
После этого можно запустить скрипт и обращаться к соответствующим эндпоинтам для отправки запросов к внешнему API, базе данных и телеграм боту.