Compare commits
No commits in common. "7787cc5b698d23385b91a2110d82bd7151a66bf7" and "aff94c7e6caa3903e276e116c6007011aeb2ab2d" have entirely different histories.
7787cc5b69
...
aff94c7e6c
21
TODO
21
TODO
|
@ -1,21 +0,0 @@
|
|||
Написать docker-compose, в котором работают:
|
||||
|
||||
WEB-приложение на FastApi. У приложения должно быть несколько end-поинтов:
|
||||
1) GET 'api/v1/messages/' показывает список всех сообщений;
|
||||
2) POST 'api/v1/message/' позволяет написать сообщение;
|
||||
|
||||
Веб сервер должен быть Nginx.
|
||||
mongo как бд для сообщений.
|
||||
|
||||
Телеграм бот (aiogram3), который показывает сообщения и позволяет создать сообщение самому.
|
||||
|
||||
Будет плюсом:
|
||||
1) Добавление кэширования при помощи Redis (кеш стирается, когда появляется новое сообщение)
|
||||
2) Развертывание на удалённом сервере и добавление SSL через CertBot.
|
||||
3) Реализовать код так, чтобы было видно, кто написал сообщение.
|
||||
4) Добавление пагинации.
|
||||
|
||||
Проект залить на Github с подробно описанным Readme
|
||||
|
||||
|
||||
Сроки 1-2 суток
|
|
@ -1,12 +0,0 @@
|
|||
include:
|
||||
- bot/compose.yml
|
||||
- web/compose.yml
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: mongo
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: admin
|
||||
MONGO_INITDB_ROOT_PASSWORD: admin
|
||||
redis:
|
||||
image: "redis:alpine"
|
|
@ -1 +0,0 @@
|
|||
pymongo[srv]
|
|
@ -1,3 +0,0 @@
|
|||
services:
|
||||
tgbot:
|
||||
build: .
|
|
@ -1,4 +0,0 @@
|
|||
from os import getenv
|
||||
|
||||
TOKEN="7231211385:AAGMO2R4T_87j7pULfJNWnYV42N1QJy5ncY"
|
||||
CHAT_ID="-4173707216"
|
|
@ -1,26 +0,0 @@
|
|||
import asyncio
|
||||
from config import *
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.types import Message
|
||||
from aiogram.enums import ParseMode
|
||||
from aiogram.client.default import DefaultBotProperties
|
||||
|
||||
|
||||
dp = Dispatcher()
|
||||
|
||||
|
||||
@dp.message()
|
||||
async def echo_handler(message: Message):
|
||||
try:
|
||||
await message.send_copy(chat_id=message.chat.id)
|
||||
except TypeError:
|
||||
await message.answer('Nice try!')
|
||||
|
||||
|
||||
async def main(self):
|
||||
bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(self.main())
|
|
@ -1 +0,0 @@
|
|||
aiogram=3.10.0
|
|
@ -1,6 +0,0 @@
|
|||
FROM python:3.10-alpine
|
||||
WORKDIR /code
|
||||
COPY ./requirements.txt /code/requirements.txt
|
||||
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
||||
COPY ./app /code/app
|
||||
CMD ["fastapi", "run", "main.py", "--port", "80"]
|
|
@ -1,10 +0,0 @@
|
|||
services:
|
||||
web:
|
||||
build: .
|
||||
environment:
|
||||
- TOKEN=
|
||||
- CHAT_ID=
|
||||
- MONGO_USERNAME=admin
|
||||
- MONGO_PASSWORD=admin
|
||||
ports:
|
||||
- "8000:5000"
|
16
web/main.py
16
web/main.py
|
@ -1,16 +0,0 @@
|
|||
from os import sysenv
|
||||
from fastapi import FastAPI
|
||||
from pymongo import MongoClient
|
||||
|
||||
app = FastAPI()
|
||||
client = MongoClient('mongodb+srv://admin:admin@mongo/chat')
|
||||
|
||||
|
||||
@app.get('/api/v1/messages')
|
||||
async def v1_messages():
|
||||
return {'message': 'Hello World'}
|
||||
|
||||
|
||||
@app.post('/api/v1/message')
|
||||
async def v1_message():
|
||||
return {'message': 'Hello World'}
|
|
@ -1,3 +0,0 @@
|
|||
fastapi[standard]>=0.113.0,<0.114.0
|
||||
pydantic>=2.7.0,<3.0.0
|
||||
pymongo[srv]>=4.8.0,<5
|
Loading…
Reference in New Issue