Exemple #1
0
def message_send(message):
    if '/start' == message.text:
        if message.chat.username:
            print('*' * 88)
            if dop.get_sost(message.chat.id) is True:
                with shelve.open(files.sost_bd) as bd:
                    del bd[str(message.chat.id)]
            if message.chat.id in in_admin: in_admin.remove(message.chat.id)
            print("User_id = {usr}\nadm_id = {ad}".format(usr=message.chat.id,
                                                          ad=config.admin_id))
            if message.chat.id == config.admin_id and dop.it_first(
                    message.chat.id) is True:
                in_admin.append(message.chat.id)
            elif dop.it_first(
                    message.chat.id
            ) is True and message.chat.id not in dop.get_adminlist():
                bot.send_message(
                    message.chat.id,
                    'Бот ещё не готов к работе!\nЕсли вы являетесь его администратором, то войдите из под аккаунту, id которого указали при запуске бота и подготовьте его к работе!'
                )
            elif dop.check_message('start') is True:
                key = telebot.types.InlineKeyboardMarkup()
                key.add(
                    telebot.types.InlineKeyboardButton(
                        text='Перейти к каталогу товаров',
                        callback_data='Перейти к каталогу товаров'))
                with shelve.open(files.bot_message_bd) as bd:
                    start_message = bd['start']
                start_message = start_message.replace('username',
                                                      message.chat.username)
                start_message = start_message.replace(
                    'name', message.from_user.first_name)
                bot.send_message(message.chat.id,
                                 start_message,
                                 reply_markup=key)
            elif dop.check_message(
                    'start') is False and message.chat.id in dop.get_adminlist(
                    ):
                bot.send_message(
                    message.chat.id,
                    'Приветствие ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*',
                    parse_mode='Markdown')

            dop.user_loger(chat_id=message.chat.id)  #логгирование юзеровs
        elif not message.chat.username:
            with shelve.open(files.bot_message_bd) as bd:
                start_message = bd['userfalse']
            start_message = start_message.replace('uname',
                                                  message.from_user.first_name)
            bot.send_message(message.chat.id,
                             start_message,
                             parse_mode='Markdown')

    elif '/adm' == message.text:
        if not message.chat.id in in_admin: in_admin.append(message.chat.id)
        adminka.in_adminka(message.chat.id, message.text,
                           message.chat.username, message.from_user.first_name)

    elif message.chat.id in in_admin:
        adminka.in_adminka(message.chat.id, message.text,
                           message.chat.username, message.from_user.first_name)

    elif '/help' == message.text:
        if dop.check_message('help') is True:
            with shelve.open(files.bot_message_bd) as bd:
                help_message = bd['help']
            bot.send_message(message.chat.id, help_message)
        elif dop.check_message(
                'help') is False and message.chat.id in dop.get_adminlist():
            bot.send_message(
                message.chat.id,
                'Сообщение с помощью ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*',
                parse_mode='Markdown')

    elif dop.get_sost(message.chat.id) is True:
        with shelve.open(files.sost_bd) as bd:
            sost_num = bd[str(message.chat.id)]
        if sost_num == 22:
            key = telebot.types.InlineKeyboardMarkup()
            try:
                amount = int(message.text)  #проверяется, числительно ли это
                with open('/home/tgshop/shop/data/hTemp/' +
                          str(message.chat.id) + 'good_name.txt',
                          encoding='utf-8') as f:
                    name_good = f.read()
                if dop.get_minimum(name_good) <= amount <= dop.amount_of_goods(
                        name_good):
                    sum = dop.order_sum(name_good, amount)
                    if dop.check_vklpayments(
                            'qiwi') == '✅' and dop.check_vklpayments(
                                'btc') == '✅':
                        b1 = telebot.types.InlineKeyboardButton(
                            text='🥝Qiwi🥝', callback_data='Qiwi')
                        b2 = telebot.types.InlineKeyboardButton(
                            text='💰btc', callback_data='btc')
                        key.add(b1, b2)
                    elif dop.check_vklpayments('qiwi') == '✅':
                        key.add(
                            telebot.types.InlineKeyboardButton(
                                text='🥝Qiwi🥝', callback_data='Qiwi'))
                    elif dop.check_vklpayments('btc') == '✅':
                        key.add(
                            telebot.types.InlineKeyboardButton(
                                text='💰btc', callback_data='btc'))
                    key.add(
                        telebot.types.InlineKeyboardButton(
                            text='Вернуться в начало',
                            callback_data='Вернуться в начало'))
                    bot.send_message(message.chat.id,
                                     'Вы *выбрали*: ' + name_good +
                                     '\n*Количеством*: ' + str(amount) +
                                     '\n*Сумма* заказа: ' + str(sum) +
                                     ' р\nВыбирите, куда желаете оплатить',
                                     parse_mode='Markdown',
                                     reply_markup=key)
                    with open('/home/tgshop/shop/data/hTemp/' +
                              str(message.chat.id) + '.txt',
                              'w',
                              encoding='utf-8') as f:
                        f.write(
                            str(amount) +
                            '\n')  #записывается количество выбраных товаров
                        f.write(
                            str(sum) +
                            '\n')  #записывается стоимость выбранных товаров
                elif dop.get_minimum(name_good) >= amount:
                    key.add(
                        telebot.types.InlineKeyboardButton(
                            text='Вернуться в начало',
                            callback_data='Вернуться в начало'))
                    bot.send_message(
                        message.chat.id,
                        'Выберите и отправьте большее количество!\nМинимальное количество к покупке *'
                        + str(dop.get_minimum(name_good)) + '*',
                        parse_mode='Markdown',
                        reply_markup=key)
                elif amount >= dop.amount_of_goods(name_good):
                    bot.send_message(
                        message.chat.id,
                        'Выберите и отправьте меньшее количество!\nМаксимальное количество к покупке *'
                        + str(dop.amount_of_goods(name_good)) + '*',
                        parse_mode='Markdown',
                        reply_markup=key)
            except:
                key.add(
                    telebot.types.InlineKeyboardButton(
                        text='Вернуться в начало',
                        callback_data='Вернуться в начало'))
                bot.send_message(message.chat.id,
                                 'Нужное количество выбирать строго в цифрах!',
                                 reply_markup=key)
Exemple #2
0
def ad_inline(callback_data, chat_id, message_id):
	if 'Вернуться в главное меню админки' == callback_data:
		if dop.get_sost(chat_id) is True:
			with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
		user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
		user_markup.row('Настроить ответы бота')
		user_markup.row('Настройка ассортимента', 'Загрузка нового товара')
		user_markup.row('Настройка платёжки')
		user_markup.row('Статистика', 'Рассылка')
		user_markup.row('Остальные настройки')
		bot.delete_message(chat_id, message_id) #удаляется старое сообщение
		bot.send_message(chat_id, 'Вы вошли в админку бота!\nЧтобы выйти из неё, нажмите /start', reply_markup=user_markup)

	elif callback_data == 'Добавить товар в магазин':
		with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_name.txt',  encoding='utf-8') as f: name = f.read()
		with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_description.txt',  encoding='utf-8') as f: description = f.read()
		with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_format.txt',  encoding='utf-8') as f: format = f.read()
		with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_minimum.txt',  encoding='utf-8') as f: minimum = f.read()
		with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_price.txt',  encoding='utf-8') as f: price = f.read()

		con = sqlite3.connect(files.main_db)
		cursor = con.cursor()
		cursor.execute("INSERT INTO goods VALUES(?, ?, ?, ? , ?, ?)", (name, description, format, minimum, price, 'data/goods/' + name + '.txt'))
		con.commit()
		con.close()
		user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
		user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
		user_markup.row('Поменять описание позиции', 'Поменять цену')
		user_markup.row('Вернуться в главное меню')
		bot.delete_message(chat_id, message_id) #удаляется старое сообщение
		bot.send_message(chat_id, 'Товар был успешно добавлен', reply_markup=user_markup)
		
		with open('https://drive.google.com/drive/folders/1tgbHgLnB1BbjDTLCTLE_f3pRZ_uX6HAK?usp=sharing' + name + '.txt', 'w',  encoding ='utf-8') as f: pass #создаёся файл для товара

	elif callback_data == 'Остановить загрузку':
		good_name = open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding ='utf-8').read()
		bot.delete_message(chat_id, message_id) #удаляется старое сообщение
		con = sqlite3.connect(files.main_db)
		cursor = con.cursor()
		cursor.execute("SELECT name, price FROM goods;")
		user_markup = telebot.types.ReplyKeyboardMarkup(True, True) 
		for name, price in cursor.fetchall(): user_markup.row(name)
		user_markup.row('Вернуться в главное меню')
		bot.send_message(chat_id, 'Товары были успешно загружены! Теперь количество ' + good_name + ' составляет ' + str(dop.amount_of_goods(good_name)) + '\nЧтобы вернуться в главное меню админки нажмите /adm', reply_markup=user_markup)
		
	elif callback_data == 'Оплата через qiwi' or callback_data == 'Оплата через coinbase' or callback_data == 'Оплата и рублями и биткоинами':
		with shelve.open(files.payments_bd) as bd:
			if callback_data =='Оплата и рублями и биткоинами':
				bd['qiwi'] = '✅'
				bd['btc'] = '✅'
			elif callback_data == 'Оплата через qiwi':
				bd['qiwi'] = '✅'
				bd['btc'] = '❌'
			elif callback_data == 'Оплата через coinbase':
				bd['qiwi'] = '❌'
				bd['btc'] = '✅'
			da_qiwi = bd['qiwi']
			da_btc = bd['btc']
			
			if da_qiwi == '❌' and da_btc == '❌':
				da_qiwi = '❌' 
				da_btc = '❌'
				da_all = ''
			elif da_qiwi == '✅' and da_btc == '✅':
				da_qiwi = '' 
				da_btc = ''
				da_all = '✅'
			else: da_all = ''

		key = telebot.types.InlineKeyboardMarkup()
		b1 = telebot.types.InlineKeyboardButton(text='Оплата через qiwi ' + da_qiwi, callback_data = 'Оплата через qiwi')
		b2 = telebot.types.InlineKeyboardButton(text='Оплата через coinbase' + da_btc, callback_data = 'Оплата через coinbase')
		b3 = telebot.types.InlineKeyboardButton(text='Оплата и рублями и биткоинами' + da_all, callback_data = 'Оплата и рублями и биткоинами')
		key.add(b1, b2)
		key.add(b3)
		try: bot.edit_message_text(chat_id=chat_id, message_id=message_id, text='Настройте', reply_markup=key)
		except: pass

	elif callback_data == 'Удалить ключи из бд':
		con = sqlite3.connect(files.main_db)
		cursor = con.cursor()
		cursor.execute("DELETE FROM coinbase_data")
		con.commit()
		con.close()
		try: bot.edit_message_text(chat_id=chat_id, message_id=message_id, text='Ключи успешно удалены из базы данных!')
		except: pass
Exemple #3
0
def inline(callback):
    the_goods = dop.get_goods()
    if callback.message.chat.id in in_admin:
        adminka.ad_inline(callback.data, callback.message.chat.id,
                          callback.message.message_id)

    elif callback.data == 'Перейти к каталогу товаров':
        con = sqlite3.connect(files.main_db)
        cursor = con.cursor()
        cursor.execute("SELECT name, price FROM goods;")
        key = telebot.types.InlineKeyboardMarkup()
        for name, price in cursor.fetchall():
            key.add(
                telebot.types.InlineKeyboardButton(text=name,
                                                   callback_data=name))
        key.add(
            telebot.types.InlineKeyboardButton(
                text='Вернуться в начало', callback_data='Вернуться в начало'))
        con.close()

        if dop.get_productcatalog() == None:
            bot.answer_callback_query(
                callback_query_id=callback.id,
                show_alert=True,
                text='На данный момент в боте не было создано ни одной позиции'
            )
        else:
            try:
                bot.edit_message_text(chat_id=callback.message.chat.id,
                                      message_id=callback.message.message_id,
                                      text=dop.get_productcatalog(),
                                      reply_markup=key,
                                      parse_mode='Markdown')
            except:
                pass

    elif callback.data in the_goods:
        with open('/home/tgshop/shop/data/hTemp/' +
                  str(callback.message.chat.id) + 'good_name.txt',
                  'w',
                  encoding='utf-8') as f:
            f.write(callback.data)
        key = telebot.types.InlineKeyboardMarkup()
        key.add(
            telebot.types.InlineKeyboardButton(text='Купить',
                                               callback_data='Купить'))
        key.add(
            telebot.types.InlineKeyboardButton(
                text='Вернуться в начало', callback_data='Вернуться в начало'))
        try:
            bot.edit_message_text(chat_id=callback.message.chat.id,
                                  message_id=callback.message.message_id,
                                  text=dop.get_description(callback.data),
                                  reply_markup=key)
        except:
            pass

    elif callback.data == 'Вернуться в начало':
        if callback.message.chat.username:
            if dop.get_sost(callback.message.chat.id) is True:
                with shelve.open(files.sost_bd) as bd:
                    del bd[str(callback.message.chat.id)]
            key = telebot.types.InlineKeyboardMarkup()
            key.add(
                telebot.types.InlineKeyboardButton(
                    text='Перейти к каталогу товаров',
                    callback_data='Перейти к каталогу товаров'))
            with shelve.open(files.bot_message_bd) as bd:
                start_message = bd['start']
            start_message = start_message.replace(
                'username', callback.message.chat.username)
            start_message = start_message.replace(
                'name', callback.message.from_user.first_name)
            try:
                bot.edit_message_text(chat_id=callback.message.chat.id,
                                      message_id=callback.message.message_id,
                                      text=start_message,
                                      reply_markup=key)
            except:
                pass
        elif not callback.message.chat.username:
            with shelve.open(files.bot_message_bd) as bd:
                start_message = bd['userfalse']
            start_message = start_message.replace(
                'uname', callback.message.from_user.first_name)
            bot.send_message(callback.message.chat.id,
                             start_message,
                             parse_mode='Markdown')

    elif callback.data == 'Купить':
        with open('/home/tgshop/shop/data/hTemp/' +
                  str(callback.message.chat.id) + 'good_name.txt',
                  encoding='utf-8') as f:
            name_good = f.read()
        if dop.amount_of_goods(name_good) == 0:
            bot.answer_callback_query(
                callback_query_id=callback.id,
                show_alert=True,
                text='В данный момент недоступно к покупке')
        elif dop.payments_checkvkl() == None:
            bot.answer_callback_query(callback_query_id=callback.id,
                                      show_alert=True,
                                      text='Оплата на данный момент отключена')
        else:
            key = telebot.types.InlineKeyboardMarkup()
            key.add(
                telebot.types.InlineKeyboardButton(
                    text='Вернуться в начало',
                    callback_data='Вернуться в начало'))
            try:
                bot.edit_message_text(
                    chat_id=callback.message.chat.id,
                    message_id=callback.message.message_id,
                    text=
                    'Введите *количество* товаров к покупке\n*Минимальное* количество к покупке: '
                    + str(dop.get_minimum(name_good)) +
                    '\n*Максимальное* доступное: ' +
                    str(dop.amount_of_goods(name_good)),
                    reply_markup=key,
                    parse_mode='Markdown')
            except:
                pass
            with shelve.open(files.sost_bd) as bd:
                bd[str(callback.message.chat.id)] = 22

    elif callback.data == 'btc' or callback.data == 'Qiwi':
        if callback.data == 'Qiwi':
            with open('/home/tgshop/shop/data/hTemp/' +
                      str(callback.message.chat.id) + 'good_name.txt',
                      encoding='utf-8') as f:
                name_good = f.read()
            amount = dop.normal_read_line(
                '/home/tgshop/shop/data/hTemp/' +
                str(callback.message.chat.id) + '.txt', 0)
            sum = dop.normal_read_line(
                '/home/tgshop/shop/data/hTemp/' +
                str(callback.message.chat.id) + '.txt', 1)

            payments.creat_bill_qiwi(callback.message.chat.id, callback.id,
                                     callback.message.message_id, sum,
                                     name_good, amount)
        elif callback.data == 'btc':
            sum = dop.normal_read_line(
                '/home/tgshop/shop/data/hTemp/' +
                str(callback.message.chat.id) + '.txt', 1)
            with open('/home/tgshop/shop/data/hTemp/' +
                      str(callback.message.chat.id) + 'good_name.txt',
                      encoding='utf-8') as f:
                name_good = f.read()
            amount = dop.normal_read_line(
                '/home/tgshop/shop/data/hTemp/' +
                str(callback.message.chat.id) + '.txt', 0)
            if int(sum) < 40:
                bot.answer_callback_query(
                    callback_query_id=callback.id,
                    show_alert=True,
                    text='Сумму менее 100 рублей оплатить в btc невозможно!')

            else:
                payments.creat_bill_btc(callback.message.chat.id, callback.id,
                                        callback.message.message_id, sum,
                                        name_good, amount)
    elif callback.data == 'Проверить оплату':
        payments.check_oplata_qiwi(callback.message.chat.id,
                                   callback.from_user.username, callback.id,
                                   callback.message.from_user.first_name)

    elif callback.data == 'Проверить оплату btc':
        payments.check_oplata_btc(callback.message.chat.id,
                                  callback.from_user.username, callback.id,
                                  callback.message.from_user.first_name)

    elif dop.get_sost(callback.message.chat.id) is True:
        with shelve.open(files.sost_bd) as bd:
            sost_num = bd[str(callback.message.chat.id)]
        if sost_num == 12: pass
Exemple #4
0
def in_adminka(chat_id, message_text, username, name_user):
	if chat_id in dop.get_adminlist():
		if message_text == 'Вернуться в главное меню' or message_text == '/adm':
			if dop.get_sost(chat_id) is True: 
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
			user_markup.row('Настроить ответы бота')
			user_markup.row('Настройка ассортимента', 'Загрузка нового товара')
			user_markup.row('Настройка платёжки')
			user_markup.row('Статистика', 'Рассылка')
			user_markup.row('Остальные настройки')
			bot.send_message(chat_id, 'Вы вошли в админку бота!\nЧтобы выйти из неё, нажмите /start', reply_markup=user_markup)

		elif message_text == 'Настроить ответы бота':
			if dop.check_message('start') is True: start = 'Изменить'
			else: start = 'Добавить'
			if dop.check_message('after_buy'): after_buy = 'Изменить'
			else: after_buy = 'Добавить'
			if dop.check_message('help'): help ='Изменить'
			else: help = 'Добавить'
			if dop.check_message('userfalse'): userfalse = 'Изменить'
			else: userfalse = 'Добавить'
			user_markup = telebot.types.ReplyKeyboardMarkup(True, True)
			user_markup.row(start + ' приветствие пользователя')
			user_markup.row(after_buy + ' сообщение после оплаты товара')
			user_markup.row(help + ' ответ на команду help', userfalse + ' сообщение если нету username')
			#user_markup.row(userfalse + ' сообщение если нету username')
			user_markup.row('Вернуться в главное меню')
			bot.send_message(chat_id, 'Выберите, какое сообщение вы хотите изменить.\nПосле выброра, вы получите небольшую инструкцию', reply_markup=user_markup)

		elif ' приветствие пользователя' in message_text or ' сообщение после оплаты товара' in message_text or ' ответ на команду help' in message_text or ' сообщение если нету username' in message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			if ' приветствие пользователя' in message_text: 
				message = 'start'
				bot.send_message(chat_id, 'Введите новое привественное сообщение! В тексте вы можете использовать слова `username`  и `name`. Они автоматически заменяться на имя пользователя', parse_mode='MarkDown', reply_markup=key)
			elif  ' сообщение после оплаты товара' in message_text: 
				message = 'after_buy'
				bot.send_message(chat_id, 'Введите новое сообщение, которое бот будет слать юзеру после покупки! В тексте вы можете использовать слова `username`  и `name`. Они автоматически заменяться на имя пользователя', parse_mode='MarkDown', reply_markup=key)
			elif  ' ответ на команду help' in message_text: 
				bot.send_message(chat_id, 'Введите новое сообщение с помощью! Туда впринципе, можно поместить что угодно! В тексте вы можете использовать слова `username`  и `name`. Они автоматически заменяться на имя пользователя', parse_mode='MarkDown', reply_markup=key)
				message = 'help'
			elif  ' сообщение если нету username' in message_text:
				bot.send_message(chat_id, 'Введите новое сообщение которое будет отправляться если у пользователя нету `username`. В тексте вы можете использовать `uname`. Оно автомаически заменится на имя пользователя', parse_mode='MarkDown', reply_markup=key)
				message = 'userfalse'
			with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding ='utf-8') as f: f.write(message)
			with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 1

		elif 'Настройка ассортимента' == message_text:
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
			user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
			user_markup.row('Поменять описание позиции', 'Поменять цену')
			user_markup.row('Вернуться в главное меню')

			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			goodz = 'Созданые товары:\n\n'
			a = 0
			cursor.execute("SELECT name, description, format, minimum, price, stored FROM goods;") 
			for name, description, format, minimum, price, stored in cursor.fetchall():
				a += 1
				amount = dop.amount_of_goods(name)
				goodz += '*Название:* ' + name + '\n*Описание:* ' + description + '\n*Формат товара:* ' + format + '\n*Минимальная количество к покупке:* ' + str(minimum) + '\n*Цена за единицу:* ' + str(price) + ' руб' + '\n*Штук осталось:* ' + str(amount) + '\n\n'
			con.close()
			if a == 0: goodz = 'Позиций ещё не создано!'	
			else: pass
			bot.send_message(chat_id, goodz, reply_markup=user_markup, parse_mode='Markdown')

		elif 'Добавить новую позицию на витрину' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'Введите название нового товара', reply_markup=key)
			with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 2

		elif 'В виде файла' == message_text or  'В виде текста' == message_text:
			if 'В виде файла' == message_text: 
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_format.txt', 'w',  encoding='utf-8') as f: f.write('file')
				bot.send_message(chat_id, 'Вы выбрали товар в виде файла\nТеперь введите минимальное количество товара, которое можно купить(т.е меньше этого числа купить не получиться)')
			elif 'В виде текста' == message_text: 
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_format.txt', 'w',  encoding='utf-8') as f: f.write('text')
				bot.send_message(chat_id, 'Вы выбрали товар в виде текста!\nТеперь введите минимальное количество товара, которое можно купить(т.е меньше этого числа купить не получиться)')
			with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 4

		elif 'Удалить позицию' == message_text:
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT name, price FROM goods;")
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False) 
			a = 0
			for name, price in cursor.fetchall():
				a += 1
				user_markup.row(name)
			if a == 0: 
				user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
				user_markup.row('Поменять описание позиции', 'Поменять цену')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Никаких позиций ещё не создано!', reply_markup=user_markup)
			else:
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Какую позицию нужно удалить?Будьте осторожны, при удаление, весь загруженый товар удалиться!', parse_mode='Markdown', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 6
			con.close()

		elif 'Поменять описание позиции' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT name, price FROM goods;")
			a = 0
			user_markup = telebot.types.ReplyKeyboardMarkup(True, True) 
			for name, price in cursor.fetchall():
				a += 1
				user_markup.row(name)
			if a == 0: bot.send_message(chat_id, 'Никаких позиций ещё не создано!')
			else:
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'У какой позиции вы хотите поменять описание?', parse_mode='Markdown', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 7
			con.close()

		elif 'Поменять цену' == message_text:
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT name, price FROM goods;")
			a = 0
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False) 
			for name, price in cursor.fetchall():
				a += 1
				user_markup.row(name)
			if a == 0:
				user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
				user_markup.row('Поменять описание позиции', 'Поменять цену')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Никаких позиций ещё не создано!', reply_markup=user_markup)
			else:
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'У какой позиции вы хотите изменить цену?', parse_mode='Markdown', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 9
			con.close()

		elif 'Загрузка нового товара' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT name, price FROM goods;")
			a = 0
			user_markup = telebot.types.ReplyKeyboardMarkup(True, True) 
			for name, price in cursor.fetchall():
				a += 1
				user_markup.row(name)
			if a == 0: bot.send_message(chat_id, 'Никаких позиций ещё не создано!')
			else:
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Товары какой позиции вы хотите загрузить?', parse_mode='Markdown', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 11
			con.close()

		elif 'Настройка платёжки' == message_text:
			with shelve.open(files.payments_bd) as bd:
				da_qiwi = bd['qiwi']
				da_btc = bd['btc']
			if da_qiwi == '❌' and da_btc == '❌':  
				da_all = ''
			elif da_qiwi == '✅' and da_btc == '✅':
				da_qiwi = '' 
				da_btc = ''
				da_all = '✅'
			else: da_all = ''

			key = telebot.types.InlineKeyboardMarkup()
			b1 = telebot.types.InlineKeyboardButton(text='Оплата через qiwi ' + da_qiwi, callback_data='Оплата через qiwi')
			b2 = telebot.types.InlineKeyboardButton(text='Оплата через coinbase ' + da_btc, callback_data='Оплата через coinbase')
			b3 = telebot.types.InlineKeyboardButton(text='Оплата и рублями и биткоинами ' + da_all, callback_data='Оплата и рублями и биткоинами')
			key.add(b1, b2)
			key.add(b3)
			bot.send_message(chat_id, 'Настройка принятия платежей', reply_markup=key)

			user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
			user_markup.row('Добавить новый киви кошелёк', 'Удалить киви кошелёк', 'Показать добавленые киви кошельки')
			user_markup.row('Добавить/заменить данные от биржи', 'Удалить данные от биржи', 'Показать добавленые ключи от  биржи')
			user_markup.row('Вернуться в главное меню')
			bot.send_message(chat_id, """*QIWI кошельков* вы можете добавить *неограниченое* количество.
Если используемый кошелёк вдруг заблокируют, вам придёт об этом уведомление, а деньги будут приниматься на другой кошелёк.

Биткоины на биржу можно принимать только на один аккаунт.

Гайды по настройке обоих платёжек есть, их можно получить при добавление соотвествующей платёжки""", reply_markup=user_markup, parse_mode='Markdown')

		elif 'Добавить новый киви кошелёк' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'Отправьте *номер* киви кошелька. Его вводите *без плюса*. Напрмер 7946 или 3756\n\nВалидность номера узнать не получиться, поэтому вводите его без ошибок! В противном случае, деньги будут зачисляться не на ваш кошелёк', reply_markup=key, parse_mode='Markdown')
			with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 14

		elif 'Удалить киви кошелёк' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'Отправьте номер киви кошелька, который нужно удалить из базы данных', reply_markup=key)
			with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 16

		elif 'Показать добавленые киви кошельки' == message_text:
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT number, token FROM qiwi_data;")
			msg = ''
			for number, token in cursor.fetchall():
				msg += '*Номер:* ' + str(number) + '\n*Токен:* ' + str(token) + '\n\n'
			bot.send_message(chat_id, 'Список кошельков в базе:\n' + msg, parse_mode='MarkDown')
			con.close()

		elif 'Добавить/заменить данные от биржи' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'Введите *API key* от биржи *coinbase*\n', reply_markup=key, parse_mode='Markdown')
			with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 17

		elif 'Удалить данные от биржи' == message_text:
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT api_key, private_key FROM coinbase_data;")
			a = 0
			for i in cursor.fetchall(): a += 1
			if a == 0: bot.send_message(chat_id, 'Ключи от биржи не добавлены! Удалять нечего')
			elif a > 0:
				key = telebot.types.InlineKeyboardMarkup()
				key.add(telebot.types.InlineKeyboardButton(text='Удалить', callback_data = 'Удалить ключи из бд'))
				key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
				bot.send_message(chat_id, 'Подтвердите или отмените удаление', reply_markup=key)
			con.close()

		elif 'Показать добавленые ключи от  биржи' == message_text:
			con = sqlite3.connect(files.main_db)
			cursor = con.cursor()
			cursor.execute("SELECT api_key, private_key FROM coinbase_data;")
			msg = ''
			for api_key, private_key in cursor.fetchall():
				msg += '*API Key:* ' + str(api_key) + '\n*Secret Key:* ' + str(private_key)
			con.close()
			bot.send_message(chat_id, 'Список ключей:\n' + msg, parse_mode='Markdown')

		elif 'Статистика' == message_text:
			amount_users = dop.user_loger() #получение числа юзеров
			profit = dop.get_profit() #получение дохода
			buyers = dop.get_amountsbayers() #получение количества покупателей
			lock = dop.get_amountblock() #получение количества юзеров заблокировавших бот
			bot.send_message(chat_id, '*Статистика*\n\n*Количество юзеров зашедших в бота:* ' + str(amount_users) + '\n*Юзеров, которые заблокировали бота: *' + str(lock) +  '\n*Доход с продаж:* ' + str(profit) + ' ₽\n*Количество покупателей:* ' + str(buyers), parse_mode='MarkDown')
			
		elif 'Рассылка' == message_text:
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
			user_markup.row('По всем юзерам', 'Только купившим')
			user_markup.row('Вернуться в главное меню')
			bot.send_message(chat_id, 'Выберите, по какой группе пользователей вы хотите сделать рассылку', reply_markup=user_markup)

		elif 'По всем юзерам' == message_text or  'Только купившим' == message_text:
			if 'По всем юзерам' == message_text: 
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f:  f.write('all\n')
				amount = dop.user_loger() #получение числа юзер
			elif 'Только купившим' == message_text: 
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f:  f.write('buyers\n')
				amount = dop.get_amountsbayers() #получение количество покупателей
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'По скольким юзерам нужно сделать рассылку? Введите числом. Максимально возможно ' + str(amount))
			with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 19

		elif 'Остальные настройки' == message_text:
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False) 
			user_markup.row('Добавить нового админа', 'Удалить админа')
			user_markup.row('Вернуться в главное меню')
			bot.send_message(chat_id, 'Выберите, что желаете сделать', reply_markup=user_markup)

		elif 'Добавить нового админа' == message_text:
			key = telebot.types.InlineKeyboardMarkup()
			key.add(telebot.types.InlineKeyboardButton(text = 'Отменить и вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
			bot.send_message(chat_id, 'Введите id нового админа')
			with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 21

		elif 'Удалить админа' == message_text:
			user_markup = telebot.types.ReplyKeyboardMarkup(True, False) 
			a = 0
			for admin_id in dop.get_adminlist(): 
				a += 1
				if int(admin_id) != config.admin_id: user_markup.row(str(admin_id))
			if a == 1: bot.send_message(chat_id, 'Вы ещё не добавляли админов!')
			else:
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Выбери id админа, которого нужно удалить', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd: bd[str(chat_id)] = 22















		elif dop.get_sost(chat_id) is True:
			with shelve.open(files.sost_bd) as bd: sost_num = bd[str(chat_id)]
			if sost_num == 1:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f:  what_message = f.read()#достаётся сообщение, ответ на которое нужно изменить
				if what_message == 'start':
					bot.send_message(chat_id, 'Добавлено новое привественное сообщение')
					shelve.open(files.bot_message_bd)['start'] = message_text
				elif what_message == 'after_buy':
					bot.send_message(chat_id, 'Добавлено новое сообщение после покупки')
					shelve.open(files.bot_message_bd)['after_buy'] = message_text
				elif what_message == 'help':
					bot.send_message(chat_id, 'Добавлено новое сообщение помощи')
					shelve.open(files.bot_message_bd)['help'] = message_text
				elif what_message == 'userfalse':
					bot.send_message(chat_id, 'Добавлено новое сообщение если нету username!')
					shelve.open(files.bot_message_bd)['userfalse'] = message_text

				if 'start' in shelve.open(files.bot_message_bd): start = 'Изменить'
				else: start = 'Добавить'
				if 'after_buy' in shelve.open(files.bot_message_bd): after_buy = 'Изменить'
				else: after_buy = 'Добавить'
				if 'help' in shelve.open(files.bot_message_bd): help = 'Изменить'
				else: help = 'Добавить'
				if 'userfalse' in shelve.open(files.bot_message_bd): userfalse = 'Изменить'
				else: userfalse = 'Добавить'
				user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
				user_markup.row(start + ' приветствие пользователя')
				user_markup.row(after_buy + ' сообщение после оплаты товара')
				user_markup.row(help + ' ответ на команду help')
				user_markup.row(userfalse + ' сообщение если нету username')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, message_text, reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 2:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_name.txt', 'w',  encoding='utf-8') as f: f.write(message_text)
				key = telebot.types.InlineKeyboardMarkup()
				key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
				bot.send_message(chat_id, 'Введите описание для ' + message_text, reply_markup=key)
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 3

			elif sost_num == 3:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_description.txt', 'w',  encoding='utf-8') as f: f.write(message_text)
				user_markup = telebot.types.ReplyKeyboardMarkup(True, True)
				user_markup.row('В виде файла', 'В виде текста')
				bot.send_message(chat_id, 'В каком виде будет выдавать товар?\n*В виде файла*? *Например*: zip-архивы(логи), txt-документы(базы)\n\nИли *в виде текст*? *Например:* аккаунты и тд', reply_markup=user_markup, parse_mode='Markdown')
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 4:
				try:
					message = int(message_text)
					if message  >= 0:
						with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_minimum.txt', 'w',  encoding='utf-8') as f: f.write(str(message_text))
						key = telebot.types.InlineKeyboardMarkup()
						key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
						bot.send_message(chat_id, 'Минимальное число к покупке - ' + str(message_text) + '\nТеперь введите цену за одну штуку товара в рублях.\nЕсли вы решите принимать оплату btc, то сумма автоматически сконвертируется в сатоши', reply_markup=key)
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 5
					else: bot.send_message(chat_id, 'Нельзя выбирать отрицательное число! Введите его заново!')
				except: bot.send_message(chat_id, 'Минимальное количество вводить строго в цифрах! Введите его заново')

			elif sost_num == 5:
				try:
					price = int(message_text)
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_price.txt', 'w',  encoding='utf-8') as f: f.write(str(message_text))
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text='Добавить товар в магазин', callback_data='Добавить товар в магазин'))
					key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
					
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_name.txt',  encoding='utf-8') as f: name = f.read()
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_description.txt',  encoding='utf-8') as f: description = f.read()
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_format.txt',  encoding='utf-8') as f: format = f.read()
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_minimum.txt',  encoding='utf-8') as f: minimum = f.read()
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + 'good_price.txt',  encoding='utf-8') as f: price = f.read()
		
					bot.send_message(chat_id, 'Вы решили добавить следущий товар:\n*Название:* ' + name + '\n*Описание:* ' + description + '\n*Формат товара:* ' + format + '\n*Минимальная количество к  покупке:* ' + minimum + '\n*Цена за единицу:* ' + price + ' руб', reply_markup=key, parse_mode='MarkDown')
					with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
				except: bot.send_message(chat_id, 'Цену за штуку вводить строго в цифрах! Введите её заново')

			elif sost_num == 6:
				con = sqlite3.connect(files.main_db)
				cursor = con.cursor()
				a = 0
				cursor.execute("SELECT description FROM goods WHERE name = " + "'" + message_text + "'")
				for i in cursor.fetchall():a += 1
				if a == 0:
					bot.send_message(chat_id, 'Выбранное позиции не обнаружено! Выберите её, нажав на соотвествующую кнопку')
				else:
					cursor.execute("DELETE FROM goods WHERE name = " + "'" + message_text + "';")
					con.commit()
					user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
					user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
					user_markup.row('Поменять описание позиции', 'Поменять цену')
					user_markup.row('Вернуться в главное меню')
					bot.send_message(chat_id, 'Позиция успешно удалена!', reply_markup=user_markup)
					with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
				con.close()

			elif sost_num == 7:
				con = sqlite3.connect(files.main_db)
				cursor = con.cursor()
				a = 0
				cursor.execute("SELECT description FROM goods WHERE name = " + "'" + message_text + "';")
				for i in cursor.fetchall(): a += 1
			
				if a == 0: bot.send_message(chat_id, 'Позиции с таким названием нет!\nВыберите заново!')
				else: 
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f: f.write(message_text)
					bot.send_message(chat_id, 'Теперь напишите новое описание', reply_markup=key)
					with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 8
				con.close()

			elif sost_num == 8:	
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f: name = f.read()
				con = sqlite3.connect(files.main_db)
				cursor = con.cursor()
				cursor.execute("UPDATE goods SET description = '" + message_text + "' WHERE name = '" + name + "';")
				con.commit()
				con.close()
				user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
				user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
				user_markup.row('Поменять описание позиции', 'Поменять цену')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Описание успешно изменено!', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 9:
				con = sqlite3.connect(files.main_db)
				cursor = con.cursor()
				a = 0
				cursor.execute("SELECT description FROM goods WHERE name = " + "'" + message_text + "';")
				for i in cursor.fetchall(): a += 1
				if a >= 1:
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f: f.write(message_text)
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text = 'Отменить и вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
					bot.send_message(chat_id, 'Теперь напишите новую цену', reply_markup=key)
					with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 10
				else: bot.send_message(chat_id, 'Позиции с таким названием  нет!\nВыберите заново!', reply_markup=user_markup)
				con.close()

			elif sost_num == 10:
				try:
					message_text = int(message_text)
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f: name = f.read()
					con = sqlite3.connect(files.main_db)
					cursor = con.cursor()
					cursor.execute("UPDATE goods SET price = '" + str(message_text) + "' WHERE name = '" + name + "';")
					con.commit()
					con.close()
					user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
					user_markup.row('Добавить новую позицию на витрину', 'Удалить позицию')
					user_markup.row('Поменять описание позиции', 'Поменять цену')
					user_markup.row('Вернуться в главное меню')
					bot.send_message(chat_id, 'Цена успешно изменена!')
					with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
				except: bot.send_message(chat_id, 'Цена должна быть строго числом\nНапишите цену заново!')

			elif sost_num == 11:
				if message_text in dop.get_goods():
					with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f: f.write(message_text)
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text = 'Остановить загрузку', callback_data = 'Остановить загрузку'))
					key.add(telebot.types.InlineKeyboardButton(text = 'Отменить и вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
					type = dop.get_goodformat(message_text)
					if type == 'file': 
						bot.send_message(chat_id, 'Загружайте файлы в бота!\nКогда все файлы загрузяться, нажмите остановить загрузку!', reply_markup=key)
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 12
					elif type == 'text': 
						bot.send_message(chat_id, 'Загружайте нужные данные в текстовом формате!\nКаждая строка = это один товар.\nПосле отправки боту всего текста, нажмите остановить загрузку',reply_markup=key)
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 13
				else: bot.send_message(chat_id, 'Такой позиции в боте не создано!')

			elif sost_num == 13:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f: good_name = f.read()
				stored = dop.get_stored(good_name)
				with open(stored, 'a', encoding ='utf-8') as f: f.write(message_text + '\n')

			elif sost_num == 14:
				try:
					message = int(message_text)
					con = sqlite3.connect(files.main_db)
					cursor = con.cursor()
					cursor.execute("SELECT number, token FROM qiwi_data WHERE number = " + str(message_text) + ";")
					if len(cursor.fetchall()) > 0: bot.send_message(chat_id,'Такой номер уже есть в базе данных!')
					elif 15 >= len(message_text) >= 10:
						with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f: f.write(message_text)
						bot.send_message(chat_id, 'Теперь введите токен\n', parse_mode='Markdown')
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 15
					else: bot.send_message(chat_id, 'Вы ввели неправильный номер!')
					con.close()
				except:
					bot.send_message(chat_id, 'В номере не должно быть букв!\n\nОтправьте *номер* киви кошелька. Его вводите *без плюса*. Напрмер 7904 или 3757', parse_mode='Markdown')

			elif sost_num == 15:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f: phone = f.read()
				if dop.check_qiwi_valid(phone, message_text) is False:
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
					bot.send_message(chat_id, 'Введённые данные не валидные! Либо, вы не дали нужных привелегий\n\nВведите номер от киви заново, либо вернитесь в главное меню', reply_markup=key)
					with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 14

				elif dop.check_qiwi_valid(phone, message_text) is True:
					con = sqlite3.connect(files.main_db)
					cursor = con.cursor()
					cursor.execute("INSERT INTO qiwi_data VALUES(?, ?)", (phone, message_text))
					con.commit()
					cursor.close()
					user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
					user_markup.row('Добавить новый киви кошелёк', 'Удалить киви кошелёк', 'Показать добавленые киви кошельки')
					user_markup.row('Добавить/заменить данные от биржи', 'Удалить данные от биржи', 'Показать добавленые ключи от  биржи')
					user_markup.row('Вернуться в главное меню')
					bot.send_message(chat_id, '*Токен* валидный\nДанные добавлены в базу данных! Деньги будут приходить на номер этого кошелька', parse_mode='Markdown', reply_markup=user_markup)
					with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 16:
				con = sqlite3.connect(files.main_db)
				cursor = con.cursor()
				cursor.execute("SELECT number, token FROM qiwi_data WHERE number = " + str(message_text) + ";")
				a = 0
				for i in cursor.fetchall(): a += 1
				if a == 0:
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text='Вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
					bot.send_message(chat_id, 'Номера `' + message_text + '` не найдено в базе данных!', reply_markup=key, parse_mode='Markdown')
				elif a > 0:
					cursor.execute("DELETE FROM qiwi_data WHERE number = '" + str(message_text) + "';")
					con.commit()
					bot.send_message(chat_id, 'Киви кошелёк успешно удалён из базы!')
				con.close()

			elif sost_num == 17:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'w', encoding='utf-8') as f: f.write(message_text)
				key = telebot.types.InlineKeyboardMarkup()
				key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
				bot.send_message(chat_id, 'Введите *API Secret*\n', reply_markup=key, parse_mode='Markdown')
				with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 18

			elif sost_num == 18:
				with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', encoding='utf-8') as f: api_key = f.read()
				if dop.check_coinbase_valid(api_key, message_text) is True:
					con = sqlite3.connect(files.main_db)
					cursor = con.cursor()
					cursor.execute("DELETE FROM coinbase_data")
					con.commit()
					cursor.execute("INSERT INTO coinbase_data VALUES(?, ?)", (api_key, message_text))
					con.commit()
					con.close()
					bot.send_message(chat_id, 'Данные *валидные* и добавлены в базу!', parse_mode='Markdown')
					with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
				elif dop.check_coinbase_valid(api_key, message_text) is False:
					key = telebot.types.InlineKeyboardMarkup()
					key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в главное меню админки', callback_data = 'Вернуться в главное меню админки'))
					bot.send_message(chat_id, 'Данные не валид!\n\nВведите *API key* от биржи *coinbase* или вернитесь в главное меню\n\nГайд по получению: https://telegra.ph/Token-coinbase-08-31', reply_markup=key, parse_mode='MarkDown')
					with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 17

			elif sost_num == 19:
				try:
					if int(message_text) > 0:
						with open('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 'a', encoding='utf-8') as f: f.write(message_text)
						key = telebot.types.InlineKeyboardMarkup()
						key.add(telebot.types.InlineKeyboardButton(text='Отменить и вернуться в главное меню админки', callback_data='Вернуться в главное меню админки'))
						group = dop.normal_read_line('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 0)
						if group == 'all': group = 'по всем'
						elif group == 'buyers': group = 'по покупателям'
						bot.send_message(chat_id, 'Вы выбрали рассылку ' + group + '\nПо ' + message_text + ' юзерам\nТеперь введите любой текст рассылки. Он будет разослан ровно в таком же виде, в каком вы его отправите')
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 20
					elif int(message_text) < 1:
						bot.send_message(chat_id, 'Для рассылки выбирать строго положительное число! Введите заново')
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 19
				except: bot.send_message(chat_id, 'Количество юзеров для рассылки введите числом заново!')

			elif sost_num == 20:
				group = dop.normal_read_line('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 0)
				amount_users = dop.read_my_line('https://drive.google.com/open?id=1F7UFARDfsTKih-tdJnXH6KlzikWfO9tz' + str(chat_id) + '.txt', 1)
				message_text = dop.rasl(group, amount_users, message_text) #получаются итоги рассылки

				user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
				user_markup.row('По всем юзерам', 'Только купившим')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, message_text, reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 21:
				dop.new_admin(message_text)
				user_markup = telebot.types.ReplyKeyboardMarkup(True, True) 
				user_markup.row('Добавить нового админа', 'Удалить админа')
				user_markup.row('Вернуться в главное меню')
				bot.send_message(chat_id, 'Новый админ успешно добавлен', reply_markup=user_markup)
				with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]

			elif sost_num == 22:
				with open(files.admins_list, encoding='utf-8') as f:
					if str(message_text) in f.read():
						dop. del_id(files.admins_list, message_text)
						bot.send_message(chat_id, 'Админ успешно удалён из списка')
						with shelve.open(files.sost_bd) as bd: del bd[str(chat_id)]
					else: 
						bot.send_message(chat_id, 'Такого id в списках админов не обнаружено! Выберите правильный id!')
						with shelve.open(files.sost_bd) as bd : bd[str(chat_id)] = 22