Skip to content

xEnotWhyNotx/online-shop

Repository files navigation

Телеграм бот на aiogram с использованием PostgreSQL

Этот проект представляет собой пример телеграм бота, написанного на Python с использованием библиотеки aiogram. Бот имеет машину состояний и взаимодействует с базой данных PostgreSQL для хранения информации.

Особенности

  • Машина состояний: Будет реализована машина состояний для управления различными экранами и функционалом бота.
  • Инлайн-кнопки: Бот предоставляет главное меню с инлайн-кнопками для выполнения различных действий.
  • Взаимодействие с базой данных: Используется PostgreSQL для хранения данных о пользователях и другой информации.

Использование

  1. Установите необходимые зависимости:

    pip install aiogram
  2. Замените your_bot_token в коде на реальный токен вашего телеграм бота.

  3. Запустите бота:

    python bot.py

Структура проекта

  • bot.py: Основной файл с кодом бота.
  • handlers.py: Файл с обработчиками для бота.
  • kb.py: Файл с инициализацией инлайн-клавиатур.
  • text.py: Файл с текстовыми ответами на каждое сообщение.
  • main.py: В дальнейшем будет переименован в test.py.
  • requirements.txt: Файл с зависимостями проекта.

Визуальное описание машины состояний

image

Визуальное представление взаимодействия с ботом

image

GigaShopBot

GigaShopBot - это программный продукт, основанный на Aiogram3.x и SQLAlchemy, который позволяет автоматизировать продажу товаров в Telegram. Одним из преимуществ бота является то, что GigaShopBot реализует возможность пополнения с помощью Bitcoin, Litecoin, USDT TRC-20, что позволяет продавать цифровые товары по всему миру.

1. Запуск бота

1.1 Запуск GigaShopBot с помощью Docker-compose.

  • Клонируйте проект из ветки 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 в вашем личном кабинете.

1.2 Запуск GigaShopBot без шифрования базы данных SQLCipher.

Примечание
Полностью совместим с 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

1.3 Запуск GigaShopBot с шифрованием базы данных SQLCipher.

Примечание
Для запуска 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

2. Руководство пользователя GigaShopBot

2.1 Регистрация

Регистрация пользователя происходит при первом обращении к боту с командой /start.

2.2 Покупка товаров

Для покупки любого товара, перейдите в "Все товары". Вы сразу же получите сообщения в формате:

Товар#1
Данные: ДанныеТовара#1
Товар#2
Данные:ДанныеТовара#2
Товар#3
Данные:ДанныеТовара#3
Товар#4
Данные:ДанныеТовара#4
Товар#5
Данные:ДанныеТовара#5
Товар#6
Данные:ДанныеТовара#6
Товар#7
Данные:ДанныеТовара#7
Товар#8
Данные:ДанныеТовара#8
Товар#9
Данные:ДанныеТовара#9
Товар#10
Данные:ДанныеТовара#10

2.4 История покупок

  • Для доступа к истории ваших покупок перейдите в "Мой профиль" -> "История покупок".
  • Вам будет представлена инлайн-клавиатура со всеми вашими покупками, нажав на любую из покупок, вам будет отправлено сообщение в формате из пункта 2.3.

3. Руководство администратора GigaShopBot

3.1 Добавление нового администратора

Чтобы добавить нового администратора, вам нужно добавить его telegram id в переменную окружения ALLOWED_ADMIN_IDS, разделенную запятыми, и перезагрузить бота.
Например: ALLOWED_ADMIN_IDS=123456,654321

3.2 Функциональность "Отправить всем пользователям бота"

  • Откройте панель администратора, введя команду /admin, затем нажмите на кнопку "Отправить всем".
  • Напишите сообщение или перешлите боту, бот поддерживает отправку сообщения с картинками и разметкой Telegram (жирный, курсив, спойлеры и т.д.).
  • Подтвердите или откажитесь от отправки сообщений.
  • После успешной отправки сообщений, исходное сообщение с инлайн-кнопками "Подтвердить", "Отклонить" изменится на Сообщение отправлено x из y человек.

3.3 Добавление новых товаров в бот

Примечание Функциональность для добавления новых товаров пока поддерживает добавление товаров с помощью .json файлов.

  • Откройте панель администратора, введя команду /admin.
  • Нажмите на кнопку "Добавить новые товары".
  • Отправьте .json файл с новыми товарами.
    Пример .json файла:
{
	"items": [
		{
			"category": "Категория#1",
			"subcategory": "Подкатегория#1",
			"price": 50,
			"description": "Имитированное описание"
		},
		{
			"category": "Категория#2",
			"subcategory": "Подкатегория#2",
			"price": 100,
			"description": "Имитированное описание"
		}
	]
}

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages