Example #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)
Example #2
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