ilyarolf / AiogramShopBot

Aiogram Telegram bot shop with ways to deposit in BTC, LTC, USDT TRC-20, USDT ERC-20, USDD TRC-20, USDC ERC-20.
https://t.me/demo_aiogramshopbot
MIT License
63 stars 21 forks source link
aiogram3 cryptocurrency shop sqlalchemy sqlcipher sqlite store telegram

AiogramShopBot

AiogramShopBot is a software product based on Aiogram3.x and SQLAlchemy that allows you to automate sales of digital goods in Telegram. One of the advantages of the bot is that AiogramShopBot implements the ability to top up with Bitcoin, Litecoin, USDT TRC-20, which allows you to sell digital goods worldwide.

📌Commercial offers

➤ For commercial offers contact me on Telegram.

🤖 You can test the functionality in AiogramShopBotDemo.

1.Starting the bot

1.0 Description of required environment variables

Environment Variable Name Description Recommend Value
WEBHOOK_PATH The path to the webhook where Telegram servers send requests for bot updates. It is not recommended to change it if only one bot will be deployed. In case several bots will be deployed on the same server, it will be necessary to change it, because there will be path collision (Does not apply to the multibot case). "" (empty string)
WEBAPP_HOST Hostname for Telegram bot, it is not recommended to change in case you use docker-compose. For docker-compose="0.0.0.0".
For local deployment="localhost".
WEBAPP_PORT Port for Telegram bot, if you plan to deploy several bots on the same server, you will need to assign a different port to each one (Not relevant to the multibot case). No recommended value
TOKEN Token from your Telegram bot, you can get it for free in Telegram from the bot of all bots with the username @botfather. No recommended value
NGROK_TOKEN Token from your NGROK profile, it is needed for port forwarding to the Internet. The main advantage of using NGROK is that NGROK assigns the HTTPS certificate for free. No recommended value
ADMIN_ID_LIST List of Telegram id of all admins of your bot. This list is used to check for access to the admin menu. No recommended value
SUPPORT_LINK A link to the Telegram profile that will be sent by the bot to the user when the “Help” button is pressed. https://t.me/${YOUR_USERNAME_TG}
DB_NAME The name of the SQLite database file. database.db
PAGE_ENTIRES The number of entries per page. Serves as a variable for pagination. 8
BOT_LANGUAGE The name of the .json file with the l10n localization. At the moment only English localization is supplied out of the box, but you can make your own if you create a file in the l10n folder with the same keys as in l10n/en.json. "en"
MULTIBOT Experimental functionality, allows you to raise several bots in one process. And there will be one main bot, where you can create other bots with the command “/add $BOT_TOKEN”. Accepts string parameters “true” or “false”. "false"
DB_PASS Only works in the feature/sqlalchemy-sqlcipher branch. The password that will be used to encrypt your SQLite database. No recommended value

1.1 Starting AiogramShopBot with Docker-compose.

Note
To get the ngrok token, you need to register on the ngrok website and confirm your email. Then you will have the ngrok token in your personal account.

1.2 Starting AiogramShopBot without SQLCipher database encryption.

Note
Fully compatible with python 3.9.6.
AiogramShopBot from the master branch does not use database encryption via SQLCipher, but it does use Aiosqlite

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"
NGROK_TOKEN = "NGROK_TOKEN_HERE"
PAGE_ENTRIES = 8
BOT_LANGUAGE = "en"
MULTIBOT = "false"

1.3 Starting AiogramShopBot with SQLCipher database encryption.

Note
To run AiogramShopBot with database encryption via SQLCipher, it is recommended to use Linux kernel operating systems because installing SQLCipher on Windows is not the easiest.

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"
DB_PASS = "your_password_to_database"
NGROK_TOKEN = "NGROK_TOKEN_HERE"
PAGE_ENTRIES = 8
BOT_LANGUAGE = "en"
MULTIBOT = "false"

2.AiogramShopBot User's Manual

2.1 Registration

User registration occurs when the bot is first accessed with the /start command. Each user is assigned a different mnemonic phrase to generate BTC, LTC, USDT TRC20 crypto addresses. BTC and LTC addresses are generated according to BIP-84 standard, for USDT TRC20 the BIP-44 standard is used, this is done so that wallets can be easily imported into Trust Wallet.

2.2 Top-up balance

To deposit balance in the bot, go to "My Profile -> Top Up balance". Copy the address of the cryptocurrency you want to top up and send the cryptocurrency there, then go back to "My Profile" and click "Refresh Balance". Refreshing the balance takes some time (1-2 seconds).
img

Note "Refresh balance" button has a 30 second cooldown.

2.3 Purchase of goods

To buy any item, go to "All categories" -> Select any category -> Select any subcategory -> Select quantity -> Confirm purchase. If the purchase is successful, you will immediately receive a message in the format: img

2.4 Purchase history

3.AiogramShopBot Admin Manual

3.1 Adding a new admin

To add a new admin you need to add his telegram id to the ADMIN_ID_LIST environment variable, separated by commas, and reload the bot.
For example: ADMIN_ID_LIST=123456,654321

3.2 Send to all bot users functionality

3.3 Adding new items to the bot

Note The functionality for adding new products so far supports adding products using .json files.

{
    "items": [
        {
            "category": "Category#1",
            "subcategory": "Subcategory#1",
            "price": 50,
            "description": "Mocked description",
            "private_data": "Mocked private data"
        },
        {
            "category": "Category#2",
            "subcategory": "Subcategory#2",
            "price": 100,
            "description": "Mocked description",
            "private_data": "Mocked private data"
        }
    ]
}

Note The "private_data" property is what the user gets when they make a purchase.

3.4 Send to everyone restocking message

Note Restocking message is generated automatically and looks as follows:

img

3.5 Statistics

3.6 Delete categories and subcategories

3.7 Make refund

Note Refunds returns money to the user's balance in the bot.

3.8 Admin notifications

Note All users with telegram id in the .env ADMIN_ID_LIST environment variable will receive these notifications

3.8.1 Notification to admin about new deposit


img

3.8.2 Notification to admin about new buy

After each purchase, you will receive a message in the format:


img

4.0 Multibot (Experimental functionality)

4.1 Starting the multibot

📋 Todo List

✨ DONATE Buy Me Coffee