Этот проект представляет собой пример телеграм бота, написанного на Python с использованием библиотеки aiogram. Бот имеет машину состояний и взаимодействует с базой данных PostgreSQL для хранения информации.
- Машина состояний: Будет реализована машина состояний для управления различными экранами и функционалом бота.
- Инлайн-кнопки: Бот предоставляет главное меню с инлайн-кнопками для выполнения различных действий.
- Взаимодействие с базой данных: Используется PostgreSQL для хранения данных о пользователях и другой информации.
-
Установите необходимые зависимости:
pip install aiogram
-
Замените your_bot_token в коде на реальный токен вашего телеграм бота.
-
Запустите бота:
python bot.py
Структура проекта
- bot.py: Основной файл с кодом бота.
- handlers.py: Файл с обработчиками для бота.
- kb.py: Файл с инициализацией инлайн-клавиатур.
- text.py: Файл с текстовыми ответами на каждое сообщение.
- main.py: В дальнейшем будет переименован в test.py.
- requirements.txt: Файл с зависимостями проекта.
GigaShopBot - это программный продукт, основанный на Aiogram3.x и SQLAlchemy, который позволяет автоматизировать продажу товаров в Telegram. Одним из преимуществ бота является то, что GigaShopBot реализует возможность пополнения с помощью Bitcoin, Litecoin, USDT TRC-20, что позволяет продавать цифровые товары по всему миру.
- Клонируйте проект из ветки master.
git clone git@github.com:xEnotWhyNotx/online-shop.git
- Если вы хотите использовать версию с шифрованием базы данных, клонируйте из ветки feature/sqlalchemy-sqlcipher.
git clone git@github.com:xEnotWhyNotx/online-shop.git -b feature/sqlalchemy-sqlcipher
- Установите переменные окружения в файле docker-compose.yml, токен от @BotFather(
TOKEN
), токен от ngrok(NGROK_TOKEN
), telegram id администраторов(ADMIN_ID_LIST
), ссылка на поддержку (SUPPORT_LINK
, эта ссылка понадобится для кнопки "Помощь" в боте). - Если вы используете версию с шифрованием базы данных, вы должны установить переменную с паролем от базы данных (
DB_PASS
). - Запустите команду
docker-compose up
.
Примечание
Чтобы получить токен ngrok, вам нужно зарегистрироваться на сайте ngrok и подтвердить свой email. Затем у вас будет токен ngrok в вашем личном кабинете.
Примечание
Полностью совместим с python 3.9.6.
GigaShopBot из ветки master не использует шифрование базы данных через SQLCipher, но использует Aiosqlite
- Клонируйте проект из ветки master.
git clone git@github.com:xEnotWhyNotx/online-shop.git
- Установите все необходимые пакеты
pip install -r requirements.txt
- Установите переменные окружения для запуска в файле .env.
Пример:
WEBHOOK_PATH = "/bot"
WEBAPP_HOST = "localhost"
WEBAPP_PORT = 1234
TOKEN = "TELEGRAM_BOT_TOKEN_HERE"
ADMIN_ID_LIST = 123456,654321
SUPPORT_LINK = "https://t.me/your_username_123"
DB_NAME = "db_file_name.db"
- После этих шагов бот готов к запуску, точка входа для запуска бота - run.py
python run.py
Примечание
Для запуска GigaShopBot с шифрованием базы данных через SQLCipher рекомендуется использовать операционные системы на ядре Linux, так как установка SQLCipher на Windows не самая простая.
- Клонируйте проект из ветки feature/sqlalchemy-sqlcipher.
git clone git@github.com:xEnotWhyNotx/online-shop.git -b feature/sqlalchemy-sqlcipher
- Установите пакет SQLCipher, например, в Ubuntu это можно сделать командой
sudo apt install sqlcipher
. - Установите все необходимые пакеты
pip install -r requirements.txt
- Переменные в .env устанавливаются так же, как в пункте 1.1, но с одним исключением, вам нужно установить пароль для базы данных.
Пример:
WEBHOOK_PATH = "/bot"
WEBAPP_HOST = "localhost"
WEBAPP_PORT = 1234
TOKEN = "TELEGRAM_BOT_TOKEN_HERE"
ALLOWED_ADMIN_IDS = 123456,654321
SUPPORT_LINK = "https://t.me/your_username_123"
DATABASE = "db_file_name.db"
DB_PASS = "your_password_to_database"
- После этих шагов бот готов к запуску, точка входа для запуска бота - run.py
python run.py
Регистрация пользователя происходит при первом обращении к боту с командой /start
.
Для покупки любого товара, перейдите в "Все товары". Вы сразу же получите сообщения в формате:
Товар#1
Данные: ДанныеТовара#1
Товар#2
Данные:ДанныеТовара#2
Товар#3
Данные:ДанныеТовара#3
Товар#4
Данные:ДанныеТовара#4
Товар#5
Данные:ДанныеТовара#5
Товар#6
Данные:ДанныеТовара#6
Товар#7
Данные:ДанныеТовара#7
Товар#8
Данные:ДанныеТовара#8
Товар#9
Данные:ДанныеТовара#9
Товар#10
Данные:ДанныеТовара#10
- Для доступа к истории ваших покупок перейдите в "Мой профиль" -> "История покупок".
- Вам будет представлена инлайн-клавиатура со всеми вашими покупками, нажав на любую из покупок, вам будет отправлено сообщение в формате из пункта 2.3.
Чтобы добавить нового администратора, вам нужно добавить его telegram id в переменную окружения ALLOWED_ADMIN_IDS, разделенную запятыми, и перезагрузить бота.
Например: ALLOWED_ADMIN_IDS=123456,654321
- Откройте панель администратора, введя команду
/admin
, затем нажмите на кнопку "Отправить всем". - Напишите сообщение или перешлите боту, бот поддерживает отправку сообщения с картинками и разметкой Telegram (жирный, курсив, спойлеры и т.д.).
- Подтвердите или откажитесь от отправки сообщений.
- После успешной отправки сообщений, исходное сообщение с инлайн-кнопками "Подтвердить", "Отклонить" изменится
на
Сообщение отправлено x из y человек
.
Примечание Функциональность для добавления новых товаров пока поддерживает добавление товаров с помощью .json файлов.
- Откройте панель администратора, введя команду
/admin
. - Нажмите на кнопку "Добавить новые товары".
- Отправьте .json файл с новыми товарами.
Пример .json файла:
{
"items": [
{
"category": "Категория#1",
"subcategory": "Подкатегория#1",
"price": 50,
"description": "Имитированное описание"
},
{
"category": "Категория#2",
"subcategory": "Подкатегория#2",
"price": 100,
"description": "Имитированное описание"
}
]
}