from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher.filters import Text
import sqlite3
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from db import BotDB
BotDB = BotDB('hellshopdb.db')
storage = MemoryStorage()
bot = Bot(token="5706294916:AAEodg3PKIVwsAQVAwvtwcfC9VlepmM5c2I")
dp = Dispatcher(bot, storage=storage)
# ======================================Клиентская Часть======================================
@dp.message_handler(commands=['start'])
async def command_start(message: types.Message):
if (not BotDB.user_exists(message.chat.id)):
BotDB.add_user(message.chat.id)
await message.answer('Приветствую в HellShop.\nУдачных покупок!', reply_markup=kb_client)
@dp.message_handler(commands=['Товары'])
@dp.message_handler(Text(equals='Товары', ignore_case=True))
async def command_tovar(message: types.Message):
await message.answer('Что вас интересует?', reply_markup=om)
@dp.callback_query_handler(text='openmenu')
async def openmenu_call(callback: types.CallbackQuery):
await callback.answer()
@dp.message_handler(commands=['Профиль'])
@dp.message_handler(Text(equals='Профиль', ignore_case=True))
async def command_prof(message: types.Message):
chat_id = message.from_user.id
balance = BotDB.get_balance(chat_id)
await message.answer(f' Баланс: {balance}', reply_markup=op)
@dp.callback_query_handler(text='openprof')
async def openprof_call(callback: types.CallbackQuery):
await callback.answer()
@dp.message_handler(commands=['Правила'])
@dp.message_handler(Text(equals='Правила', ignore_case=True))
async def command_pravila(message: types.Message):
await message.answer(
'1.1 Вывод средств не осущетсвляется.\n1.2 На товары нет гарантий (замены и возвраты не осуществляются) и магазин не несет ответственности за ваше имущество.\n1.3 Срок выдачи стикеров до 2х минут, в ином случае обращаться в поддержку.\n1.4 Использование багов, а также за скам или попытку скама, оскорбление, за издёвку над админом (если админ посчитает это как унижение или ему будет неприятно) магазин может наказать вас.\n1.5 Тех поддержка отвечает в течение 24 часов, если много писать и навязываться то до 7дней.\n1.6 Незнание правил не освобождает от ответственности\n1.7 Администрация имеет право внести изменения в текст правил, не уведомляя об этом пользователям.')
@dp.message_handler(commands=['Инфо'])
@dp.message_handler(Text(equals='Инфо', ignore_case=True))
async def command_info(message: types.Message):
await message.answer('Выберите действие:', reply_markup=urlkb)
# ======================================Админ Часть======================================
# ======================================Кнопки======================================
kb_client = ReplyKeyboardMarkup(resize_keyboard=True)
b1 = KeyboardButton('Товары')
b2 = KeyboardButton('Профиль')
b3 = KeyboardButton('Правила')
b4 = KeyboardButton('Инфо')
kb_client.add(b1).insert(b2).add(b3).insert(b4)
urlkb = InlineKeyboardMarkup(row_width=2, callback_data='openmenu')
urlb1 = InlineKeyboardButton(text='⚙Админ/Реклама⚙', url='https://t.me/smurf00')
urlb2 = InlineKeyboardButton(text='Тех.поддержка', url='https://t.me/smurf00')
urlb3 = InlineKeyboardButton(text='❤Все проекты❤', url='https://t.me/testchathell')
urlkb.add(urlb1).insert(urlb2).add(urlb3)
om = InlineKeyboardMarkup(row_width=2)
om1 = InlineKeyboardButton(text='Накрутка', callback_data='openmenu')
om2 = InlineKeyboardButton(text='VPN', callback_data='openmenu')
om3 = InlineKeyboardButton(text='Схемы', callback_data='openmenu')
om4 = InlineKeyboardButton(text='✉Почты✉', callback_data='openmenu')
om.add(om1).insert(om2).add(om3).insert(om4)
op = InlineKeyboardMarkup(row_width=2)
op1 = InlineKeyboardButton(text='Пополнить', callback_data='openprof')
op2 = InlineKeyboardButton(text='История покупок', callback_data='openprof')
op.add(op1).add(op2)
# ======================================Другое======================================
@dp.message_handler()
async def empty(message: types.Message):
await message.answer('Неправильная команда')
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)