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.
git clone git@github.com:ilyarolf/AiogramShopBot.git
git clone git@github.com:ilyarolf/AiogramShopBot.git -b feature/sqlalchemy-sqlcipher
TOKEN
), token from
ngrok(NGROK_TOKEN
), telegram id of admins(ADMIN_ID_LIST
), support link (SUPPORT_LINK
, the link will be
needed for the "Help" button in the bot).DB_PASS
).docker-compose up
command.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.
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
git clone git@github.com:ilyarolf/AiogramShopBot.git
pip install -r requirements.txt
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"
python run.py
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.
git clone git@github.com:ilyarolf/AiogramShopBot.git -b feature/sqlalchemy-sqlcipher
sudo apt install sqlcipher
.pip install -r requirements.txt
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"
python run.py
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.
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).
Note "Refresh balance" button has a 30 second cooldown.
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:
Item#1
Data: DataOfItem#1
Item#2
Data:DataOfItem#2
Item#3
Data:DataOfItem#3
Item#4
Data:DataOfItem#4
Item#5
Data:DataOfItem#5
Item#6
Data:DataOfItem#6
Item#7
Data:DataOfItem#7
Item#8
Data:DataOfItem#8
Item#9
Data:DataOfItem#9
Item#10
Data:DataOfItem#10
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
/admin
, then click on the "Send to everyone" button.Message sent to x out of y people
.Note The functionality for adding new products so far supports adding products using .json files.
/admin
.{
"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.
/admin
.Note Restocking message is generated automatically and looks as follows:
π
Update YYYY-MM-DD
π Category Category#1
π Subcategory Subcategory#1 1 pcs
π Category Category#2
π Subcategory Subcategory#2 1 pcs
/admin
.x new users:
with inline buttons that will take you to chat with each new user who has a
nickname./admin
.Delete category
or Delete subcategory
button.Sucessfully deleted {name} category/subcategory
Note Refunds returns money to the user's balance in the bot.
/admin
.Make refund
button.TelegramID/TelegramUsername|TotalPrice|SubcategoryName
.@durov|$500.0|Test subcategory
.Do you really want to refund user @durov for purchasing 1 SubcategoryName in the amount of $500.0
format.
Confirm or decline the refund.Successfully refunded $500.0 to user durov for purchasing 1 SubcategoryName
message.You have been refunded $50.0 for the purchase of 1 pieces of SubcategoryName
format.Note All users with telegram id in the .env ADMIN_ID_LIST environment variable will receive these notifications
New deposit by user with username @durov for $500 with 0.01 BTC
BTC address:bc1pvz78lx4lw0sutcu0l5szn74ke0hrkghvdg2u8wc705alr5hj9l4q8hzymp
Seed: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon
After each purchase, you will receive a message in the format:
A new purchase by user @durov for the amount of $500.0 for the purchase of a 1 pcs SubcategoryName.