Exemplo n.º 1
0
def set_price_for_sub(mes: types.Message):
    if not mes.text == 'Отмена':
        try:
            price = float(mes.text)
        except ValueError:
            bot.send_message(mes.from_user.id,
                             'Неверное значение. Попробуйте еще раз')
        else:
            if price >= 0.5:
                bot.send_message(
                    mes.from_user.id,
                    'Отлично! Теперь введите желаемое количество подписчиков',
                    reply_markup=types.ReplyKeyboardRemove())
                db_acces.set_price_for_new_channel(mes.from_user.id, price)
                db_acces.set_user_state(mes.from_user.id,
                                        states.SET_COUNT_OF_SUB)
            else:
                bot.send_message(mes.from_user.id,
                                 'Минимальная стоимость подписки: 0.25р')
    else:
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        db_acces.delete_channel_order(mes.from_user.id)
        bot.send_message(mes.from_user.id,
                         'Отменено',
                         reply_markup=get_main_menu_markup())
Exemplo n.º 2
0
def add_sum_to_balance(mes: types.Message):
    if mes.text == 'Отмена':
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        bot.send_message(mes.from_user.id,
                         'Отменено',
                         reply_markup=get_admin_markup())
        return
    try:
        user_id, money = map(int, str(mes.text).split(' - '))
    except ValueError:
        bot.send_message(mes.from_user.id, 'Неверный формат, попробуйте снова')
    else:
        result = db_acces.add_sum_to_balance(user_id, money)
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        if result:
            got_money = int(config['stat']['got_money']) + money
            config.set('stat', 'got_money', str(got_money))
            save_data()
            bot.send_message(user_id,
                             'На ваш баланс зачислено {}р.'.format(str(money)))
            bot.send_message(mes.from_user.id,
                             'Баланс пользователя успешно пополнен',
                             reply_markup=get_admin_markup())
        else:
            bot.send_message(mes.from_user.id,
                             'Ошибка пополнения баланса!',
                             reply_markup=get_admin_markup())
Exemplo n.º 3
0
def set_count_of_sub(mes: types.Message):
    try:
        count = int(mes.text)
    except ValueError:
        bot.send_message(
            mes.from_user.id,
            'Отлично! Теперь введите желаемое количество просмотров')
    else:
        if count >= 50:
            price = db_acces.get_price_for_new_channel(mes.from_user.id)
            db_acces.set_sub_for_new_channel(mes.from_user.id, count)
            res = count * price
            bot.send_message(
                mes.from_user.id, 'Отлично! Итоговая стоимость продвижения '
                'составит {count} * {price} = {res}р.'.format(count=count,
                                                              price=price,
                                                              res=res))
            markup = types.ReplyKeyboardMarkup()
            markup.row('Подтвердить ✅')
            markup.row('Отмена')
            markup.resize_keyboard = True
            bot.send_message(mes.from_user.id,
                             'Всё верно?',
                             reply_markup=markup)
            db_acces.set_user_state(mes.from_user.id, states.CONFIRM_SUB)
        else:
            bot.send_message(mes.from_user.id, 'Минимальное количество: 50')
Exemplo n.º 4
0
def insert_text(mes: types.Message):
    text = 'Данная опция отправляет всем пользователем объявление в разметке Markdown \n\n' \
           'Справка по разметке: \n\n' \
           '*Жирный*\n_Курсив_\n[название URL](http://www.example.com/)\n`код в виде строки`\n\n' \
           'Отправь текст, чтобы сделать объявление'
    db_acces.set_user_state(mes.from_user.id, states.SHARE_INFO)
    bot.send_message(mes.from_user.id, text, reply_markup=types.ReplyKeyboardRemove())
Exemplo n.º 5
0
def set_count_of_watch(mes: types.Message):
    try:
        count = int(mes.text)
    except ValueError:
        bot.send_message(mes.from_user.id,
                         'Неверное значение. Попробуйте еще раз')
    else:
        if count >= 50:
            price = db_acces.get_price_for_new_post(mes.from_user.id)
            db_acces.set_watchs_for_new_post(mes.from_user.id, count)
            res = count * price
            bot.send_message(
                mes.from_user.id, 'Отлично! Итоговая стоимость продвижения '
                'составит {count} * {price} = {res}р.'.format(count=count,
                                                              price=price,
                                                              res=res))
            markup = types.ReplyKeyboardMarkup()
            markup.row('Подтвердить ✅')
            markup.row('Отмена')
            markup.resize_keyboard = True
            bot.send_message(mes.from_user.id,
                             'Всё верно?',
                             reply_markup=markup)
            db_acces.set_user_state(mes.from_user.id, states.CONFIRM_WATCHS)
        else:
            bot.send_message(mes.from_user.id, 'Минимальное количество: 50')
Exemplo n.º 6
0
def remove_sum_from_balance_id(mes: types.Message):
    text = 'Чтобы уменьшить баланс - введи <код пользователя> - <сумма числом>\n\n' \
           'Например: 446116692 - 30'
    markup = types.ReplyKeyboardMarkup()
    markup.row('Отмена')
    markup.resize_keyboard = True
    db_acces.set_user_state(mes.from_user.id, states.REMOVE_MONEY)
    bot.send_message(mes.from_user.id, text, reply_markup=markup)
Exemplo n.º 7
0
def share_info(mes: types.Message):
    text = mes.text
    users = db_acces.get_users()
    for u in users:
        try:
            bot.send_message(u.telegram_id, text, parse_mode='Markdown')
        except:
            pass
    db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
    bot.send_message(mes.from_user.id, 'Рассылка завершена', reply_markup=get_admin_markup())
Exemplo n.º 8
0
def confirm_sub(mes: types.Message):
    if mes.text == 'Подтвердить ✅':
        price = db_acces.get_price_for_new_channel(mes.from_user.id)
        count = db_acces.get_sub_for_new_channel(mes.from_user.id)
        end_price = price * count
        balance = db_acces.get_user_balance(mes.from_user.id)
        if (balance - end_price) >= 0:
            db_acces.set_user_balance(mes.from_user.id, balance - end_price)
            db_acces.publish_channel_order(mes.from_user.id)
            bot.send_message(mes.from_user.id,
                             'Ваш заказ успешно оформлен!',
                             reply_markup=get_main_menu_markup())
            db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        else:
            bot.send_message(
                mes.from_user.id,
                'Недостаточно средств! Пополните свой баланс и повторите заказ снова',
                reply_markup=get_main_menu_markup())
            db_acces.delete_post_order(mes.from_user.id)
            db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
    elif mes.text == 'Отмена':
        bot.send_message(mes.from_user.id,
                         'Отменено',
                         reply_markup=get_main_menu_markup())
        db_acces.delete_post_order(mes.from_user.id)
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
    else:
        bot.send_message(mes.from_user.id,
                         'Какой-то странный ответ. Попробуйте еще раз')
Exemplo n.º 9
0
def remove_sum_from_balance(mes: types.Message):
    if mes.text == 'Отмена':
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        bot.send_message(mes.from_user.id, 'Отменено', reply_markup=get_admin_markup())
        return
    try:
        user_id, money = map(int, str(mes.text).split(' - '))
    except ValueError:
        bot.send_message(mes.from_user.id, 'Неверный формат, попробуйте снова')
    else:
        balance = db_acces.get_user_balance(user_id)
        if balance is None:
            bot.send_message(mes.from_user.id, 'Такого счета не существует', reply_markup=get_admin_markup())
            db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
            return
        if (balance - money) <= 0:
            result = db_acces.set_user_balance(user_id, 0)
        else:
            result = db_acces.set_user_balance(user_id, balance - money)
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        if result:
            gave_money = int(config['stat']['gave_money']) + money
            config.set('stat', 'gave_money', str(gave_money))
            save_data()
            bot.send_message(user_id, 'C вашего балансв снято {}р.'.format(str(money)))
            bot.send_message(mes.from_user.id, 'Баланс пользователя успешно уменьшен', reply_markup=get_admin_markup())
        else:
            bot.send_message(mes.from_user.id, 'Ошибка уменьшения баланса!', reply_markup=get_admin_markup())
Exemplo n.º 10
0
def forward_message(mes: types.Message):
    if not mes.text == 'Отмена':
        if db_acces.get_user_state(mes.from_user.id) == states.FORWARD_POST_FOR_WATCH and mes.forward_from_chat is not None:
            username = mes.from_user.id
            post_id = mes.message_id
            user = db_acces.get_user_state(mes.from_user.id)
            db_acces.create_order_post(post_id, username, 0.5, 50, user)
            bot.send_message(mes.from_user.id,
                             '👑 Все сделано правильно!\n👥Теперь введите стоимость 1 просмотра вашего '
                             'поста в рублях (минимальная стоимость: 0.04 рублей)')
            db_acces.set_user_state(mes.from_user.id, states.SET_PRICE_FOR_WATCH)
        elif db_acces.get_user_state(mes.from_user.id) == states.FORWARD_POST_FOR_SUB and \
                mes.forward_from_chat is not None:

            username = mes.forward_from_chat.username
            try:
                bot.get_chat_members_count('@' + username)
            except apihelper.ApiException:
                bot.send_message(mes.from_user.id, 'Бот не является администратором канала!')
            else:
                user = db_acces.get_user_state(mes.from_user.id)
                db_acces.create_channel(username, 0.5, 50, user)
                bot.send_message(mes.from_user.id,
                                 '👑 Все сделано правильно!\n👥Теперь введите стоимость 1 подписчика на ваш '
                                 'канал в рублях (минимальная стоимость: 0.5 рублей')
                db_acces.set_user_state(mes.from_user.id, states.SET_PRICE_FOR_SUB)

        else:
            bot.send_message(mes.from_user.id, 'Какая-то ошибка, попробуйте еще раз', reply_markup=get_cancel_markup())
    else:
        db_acces.set_user_state(mes.from_user.id, states.CHOOSE_OPTION)
        bot.send_message(mes.from_user.id, 'Отменено', reply_markup=get_main_menu_markup())
Exemplo n.º 11
0
def order_post(mes: types.Message):
    db_acces.set_user_state(mes.from_user.id, states.FORWARD_POST_FOR_WATCH)
    bot.send_message(mes.from_user.id,
                     'Перешлите желаемый для продвижения пост',
                     parse_mode='Markdown',
                     reply_markup=get_cancel_markup())
Exemplo n.º 12
0
def order_channel(mes: types.Message):
    db_acces.set_user_state(mes.from_user.id, states.FORWARD_POST_FOR_SUB)
    bot.send_message(mes.from_user.id,
                     bot_access_text,
                     parse_mode='Markdown',
                     reply_markup=get_cancel_markup())