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())
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())
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')
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())
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')
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)
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())
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, 'Какой-то странный ответ. Попробуйте еще раз')
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())
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())
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())
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())