{"id":27425699,"url":"https://github.com/0xblcklptn/telegrambot","last_synced_at":"2026-05-03T18:33:16.084Z","repository":{"id":162006805,"uuid":"569270958","full_name":"0xBLCKLPTN/TelegramBot","owner":"0xBLCKLPTN","description":"Telegram Bot with Postgresql and Sberbank","archived":false,"fork":false,"pushed_at":"2022-12-22T08:55:33.000Z","size":18496,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T12:47:18.597Z","etag":null,"topics":["docker","docker-compose","environment-variables","freelance","postgresql","python","sqlalchemy-python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xBLCKLPTN.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-22T13:09:12.000Z","updated_at":"2022-12-01T08:10:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"09f83f98-6029-4e9c-b898-47c7be388f1b","html_url":"https://github.com/0xBLCKLPTN/TelegramBot","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/0xBLCKLPTN/TelegramBot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xBLCKLPTN%2FTelegramBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xBLCKLPTN%2FTelegramBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xBLCKLPTN%2FTelegramBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xBLCKLPTN%2FTelegramBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xBLCKLPTN","download_url":"https://codeload.github.com/0xBLCKLPTN/TelegramBot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xBLCKLPTN%2FTelegramBot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32579800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","environment-variables","freelance","postgresql","python","sqlalchemy-python"],"created_at":"2025-04-14T12:28:23.105Z","updated_at":"2026-05-03T18:33:16.079Z","avatar_url":"https://github.com/0xBLCKLPTN.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# О проекте\n\n### Технологии, которые мы используем:\n- Docker\n- Docker-compose\n- Python:3.8\n- aiogram\n- SQLAlchemy\n- PostgreSQL\n\nВесь код находится в Докер-контейнерах для простоты деплоя\n\n- Контейнер с PostgreSQL\n- Контейнер с PGAdmin\n- Контейнер с самим ботом\n\n### Настройка бота:\nДля настройки бота, вам нужно изменить `.env` файл:\n\n```sh\n# Токен бота\nBOT_TOKEN=123123:QWd23f....\n# Имя пользователя базы данных\nDB_USERNAME=test\n# Пароль от базы данных\nDB_PASSWORD=test\n# Имя базы данных\nDB_NAME=testbase\n\n# Путь к директории хранения файлов\nDATA_STORAGE=data_storage/\n# Путь к файлу с инструкцией бота\nINSTRUCTIONS_FILE=./keyboards/instruction.txt\n\n# Токен для оплаты.\nPAYMENT_TOKEN=401643678:TEST:....\n```\n\nТокен для оплаты можно получить от `BotFather`:\n\n- выбираем бота:\n![alt text](./docs/images/list_of_bots.png)\n- нажимаем на этого бота\n![alt text](./docs/images/selected_bot.png)\n- выбираем `payments`\n![alt text](./docs/images/select_payment.png)\n- если выбрали сбербанк, то бот предложит выбрать тестовый или live способ:\n![alt text](./docs/images/connect_sber_1.png)\n- для примера, я нажму на тестовую оплату\n![alt text](./docs/images/connect_sber_test.png)\n- после чего `botfather` выдаст токен для оплаты, который надо вставить в `.env`\n\nЕсли вы заполнили все `.env` параметры правильно, то приступаем к установке и запуску!\n\n## Установка\nВсе что нам нужно - `Docker`. Код написан так, чтобы вся установка прошла автоматически и вам не нужно было заниматься командами (ну или мы попытались так сделать)\n\nДля `Linux`-серверов:\n```sh\nroot@system: sudo apt-get install curl\nroot@system: sudo apt-get install gnupg\nroot@system: sudo apt-get install ca-certificates\nroot@system: sudo apt-get install lsb-release\n\nroot@system: sudo mkdir -p /etc/apt/keyrings\nroot@system: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n\n# Add Docker and docker compose support to the Ubuntu's packages list\nroot@system: echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-pluginsudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-pluginlinux/ubuntu   $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n\nroot@system: sudo apt-get update\n \n# Install docker and docker compose on Ubuntu\nroot@system: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin\n```\n\n### Windows:\nПросто следуйте инструкциям.\n\n### MacOS:\nТыц\n\n## Запуск\n```sh\n# Находясь в директории src\nroot@system: docker-compose --env-file .env up\n```\n![alt text](docs/images/docker-start.png)\nВозможно, установка всех образов займет какое-то время...\n\nЕсли вы получаете похожий результат, то все успешно запущено и можно проверять\nПроверить вы можете используя Docker Desktop или cli-версию:\n\n![alt text](docs/images/docker-gui.png)\n\nПоздравляю! Бот запущен и работает\n\n---\n\n## Дополнительно\nКак вы уже и заметили, Bot, Postgresql, pgAdmin - работают в разных контейнерах и с разными портами.\nТак же, имеется возможность просмотра базы данных с использованием pgAdmin - http://127.0.0.1:5050\n\n![alt text](docs/images/pgAdmin-web.png)\n\n```yml\nGeneral:\n    Connection-name: qwerty (вообще, можете использовать любое)\nConnection:\n    Host name/address: db\n    Port: 5432\n    Username: тот, который вы указали в .env\n    Password: тот, который вы указали в .env\n```\nДалее жмете `Save` и pgAdmin, думаю, разобраться сможете\n\n## Реализация:\n\n### БД:\n\n\n```python\n# Таблица Users\nclass Users(BaseModel):\n    FirstName = Column(String)\n    MiddleName = Column(String)\n    LastName = Column(String)\n    \n    username = Column(String)\n    user_id = Column(Integer)\n    phone_number = Column(String)\n    email = Column(String)\n\n    cookies_file = Column(String, default= None)\n    company_id = Column(Integer, default = None)\n    recomendations_file = Column(String, default = None)\n    list_of_products_file = Column(String, default = None)\n\n    company_name = Column(String)\n    revenue = Column(BigInteger)\n    added = Column(DateTime, default = datetime.utcnow)\n    last_buy = Column(DateTime, default = None)\n\n\n# Таблица Admins\nclass Admins(BaseModel):\n    id = Column(Integer, primary_key=True)\n    username = Column(String, default= None)\n    user_id = Column(String)\n    created = Column(DateTime, default=datetime.utcnow)\n```\n\n## Проект\n\nВсе распределено по своим папкам.\nИсполняемым файлом служит `start.py`, от которого и идут пляски с импортами и модулями.\n\nВ файле `.env` хранится вся информация, которая нужна для запуска базы, бота и так далее\n\n- `core/config.py` - выступает, как загрузчик переменных из `.env`\n- `data_storage` - директория для хранения файлов. У каждого пользователя будет свой каталог с данными\n- `db/db.py` - запускает `SQLAlchemy`, создает таблицу и сессию\n- `keyboards/*` - директория с логикой бота. Тут и клавиатуры, и инструкции, и состояния...\n- `models/models.py` - модель таблиц баз данных\n- `utils/dataspace.py` - CRUD для базы данных\n- `utils/other_utils.py` - создание папки, удаление лишних файлов\n- `utils/validator.py` - функции валидации\n- `dispatcher.py` - инициализация и создание объектов _dispatcher_ и _bot_\n- `docker-compose.py` - инструкция для контейнера, в котором будет все крутиться\n- `Dockerfile` - инструкция для запуска бота в контейнере\n- `env.example` - планировалось удалить, но да и пусть будет\n- `requirements.txt` - зависимости к проекту\n- `start.py` - запуск бота, да и всей системы в целом\n- `test_database.py` - тестирование базы данных\n- `tests.py` - юнит-тесты к `validator`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xblcklptn%2Ftelegrambot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xblcklptn%2Ftelegrambot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xblcklptn%2Ftelegrambot/lists"}