async def contract_pay(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) await database.search_query(tel=await db.select_tel(user_id=message.from_user.id)) if database.data[5] == '150.': msg = await message.answer(text=_("Зверніть увагу, що тут ви можете поповнити тільки свій особовий рахунок!")) await db.message("BOT", 10001, msg.html_text, msg.date) await bot.send_invoice(message.from_user.id, **P150.generate_invoice(), payload=150) msg1 = await message.answer( text=_("Діє акція - поповни рахунок на 6 місяців одним платежем та отримуй 10% від суми поповнення!")) await db.message("BOT", 10001, msg1.html_text, msg1.date) await bot.send_invoice(message.from_user.id, **P900.generate_invoice(), payload=900) elif database.data[5] == '200': msg = await message.answer(text=_("Зверніть увагу, що тут ви можете поповнити тільки свій особовий рахунок!")) await bot.send_invoice(message.from_user.id, **P200.generate_invoice(), payload=200) await db.message("BOT", 10001, msg.html_text, msg.date) msg1 = await message.answer( text=_("Діє акція - поповни рахунок на 6 місяців одним платежем та отримуй 10% від суми поповнення!")) await bot.send_invoice(message.from_user.id, **P1200.generate_invoice(), payload=1200) await db.message("BOT", 10001, msg1.html_text, msg1.date) else: msg = await message.answer(text=_("Вибачте, але для вашого тарифу не передбачено поповнення рахунку через бот"), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def bot_echo(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) tel = await db.select_tel(message.from_user.id) if tel: await database.search_query(tel) if len(database.data) > 0: msg = await message.answer(text=_("Ваш username: {}\n" "На вашому рахунку: {}\n" "Ваш номер договору: {}\n" "Ваше ПІБ: {}\n" "Стан послуги: {}\n" "Ваш пакет: {}").format( database.data[0], database.data[1], database.data[2], database.data[3], database.data[4], database.data[5]), reply_markup=client_request) await db.message("BOT", 10001, msg.html_text, msg.date) else: msg = await message.answer( text=_("Вказаний номер телефону не знайдено у нашому білінгу\n" "Якщо ви бажаєте підключитися - залиште заявку на підключення натиснувши кнопку"), reply_markup=unknown_request_button) await db.message("BOT", 10001, msg.html_text, msg.date) for admin in ADMINS: try: msg = await dp.bot.send_message(chat_id=admin, text=f"Сообщения от пользователя: {message.from_user.full_name}\n" f"Текст сообщения: {message.text}\n" f"Телефон: {await db.select_tel(message.from_user.id)}") await db.message("BOT", 10001, msg.html_text, msg.date) except Exception as err: logging.exception(err) else: await database.search_query(tel) if len(database.data) > 0: msg = await message.answer(text=_("Ваш username: {}\n" "На вашому рахунку: {}\n" "Ваш номер договору: {}\n" "Ваше ПІБ: {}\n" "Стан послуги: {}\n" "Ваш пакет: {}").format( database.data[0], database.data[1], database.data[2], database.data[3], database.data[4], database.data[5]), reply_markup=client_request) await db.message("BOT", 10001, msg.html_text, msg.date) else: msg = await message.answer( text=_("Вказаний номер телефону не знайдено у нашому білінгу\n" "Якщо ви бажаєте підключитися - залиште заявку на підключення натиснувши кнопку"), reply_markup=unknown_request_button) await db.message("BOT", 10001, msg.html_text, msg.date) for admin in ADMINS: try: msg = await dp.bot.send_message(chat_id=admin, text=f"Сообщения от пользователя: {message.from_user.full_name}\n" f"Текст сообщения: {message.text}\n" f"Пользователь без телефона") await db.message("BOT", 10001, msg.html_text, msg.date) except Exception as err: logging.exception(err)
async def lang_reply(call: CallbackQuery): await db.message(call.from_user.full_name, call.from_user.id, call.message.text, call.message.date) await db.set_lang(call.data[7:].lower(), call.from_user.id) await call.answer() msg = await call.message.edit_text( text=_( "Ви обрали {}\nТепер відправте, будь ласка, свій номер телефону, щоб знайти Ваш обліковий запис у нашому білінгу", locale=call.data[7:].lower()).format( call.data[7:]) ) await db.message("BOT", 10001, msg.html_text, msg.date) msg1 = await call.message.answer(text=_("Кнопка для цього знизу", locale=call.data[7:].lower()), reply_markup=tel_button) await db.message("BOT", 10001, msg1.html_text, msg1.date)
async def get_id(message: types.Message, state: FSMContext): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) if message.from_user.id == 390616685 or message.from_user.id == 133347159: client_id = await db.choose_contract() msg = await message.answer(text=_("Оберіть клієнта, написав його telegram_id\n")) for i in client_id: await message.answer(f"Імя: {i[0]}\n" f"Телеграм айді: {i[1]}\n" f"Контракт: {i[2]}") await db.message("BOT", 10001, msg.html_text, msg.date) await Contract.get_id.set() else: msg = await message.answer(_("Эту команду могут использовать только администраторы"), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def get_client(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) msg = await message.answer( text=_("Введіть ПІБ та номер телефону - ми зв'яжемось з Вами для підключення"), reply_markup=ReplyKeyboardRemove()) await db.message("BOT", 10001, msg.html_text, msg.date) await Client.first()
async def time_pay(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) if await database.t_pay(await db.select_contract(message.from_user.id)): msg = await message.answer(text=_( "Доступ в Інтернет розблоковано на 24 години!\n" "Рахунок поповнено на {} грн на 24 години! Тепер можете повернутись у головне меню" ).format(database.time_pay[0]), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date) else: msg = await message.answer(text=_( "Ви не можете використати тимчасовий платіж!\n" "Користуватись тимчасовим платежем можна раз на місяць!"), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def changed_lang(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) await db.set_lang(message.text[3:].lower(), message.from_user.id) if message.text[3:] == "UA": return_button = ReplyKeyboardMarkup( resize_keyboard=True, keyboard=[[KeyboardButton(text="Головне меню")]], one_time_keyboard=True) elif message.text[3:] == "EN": return_button = ReplyKeyboardMarkup( resize_keyboard=True, keyboard=[[KeyboardButton(text="Main menu")]], one_time_keyboard=True) else: return_button = ReplyKeyboardMarkup( resize_keyboard=True, keyboard=[[KeyboardButton(text="Главное меню")]], one_time_keyboard=True) msg = await message.answer(text=_( "Ви обрали {}\nТепер можете перейти у головне меню", locale=message.text[3:].lower()).format(message.text[3:]), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def help_message(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) msg = await message.answer( text=_("@infoaura_bot - бот мережі інтернет-провайдера Інфоаура.\n" "Бот призначений для доступного управлінням послугами, поповнення рахунку і виклику фахівця для вирішення локальних проблем Клієнта.\n" "Пропозиції та зауваження по роботі бота просимо писати на email: [email protected]."), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def bot_start(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) await message.answer(text=_("Привіт, {}!\n" "Бот працює в тестовому режимі").format(message.from_user.full_name), reply_markup=ReplyKeyboardRemove()) try: await db.add_user( full_name=message.from_user.full_name, username=message.from_user.username, telegram_id=message.from_user.id ) except asyncpg.exceptions.UniqueViolationError: await db.select_user(telegram_id=message.from_user.id) await message.answer(text=_("Оберіть зручну для Вас мову!"), reply_markup=choice_lang )
async def ua_tel_get(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) tel = message.contact.phone_number tel = format_number(tel) await db.update_phone_number(tel, message.from_user.id) await database.search_query(tel) try: await db.set_contract(database.data[2], message.from_user.id) except IndexError: pass net_on = _("Увімкнено") net_off = _("Вимкнено") net_pause = await database.check_net_pause(database.data[2]) if len(database.data) > 0: if net_pause is True and database.data[4] == "on": msg = await message.answer(text=_("Ваш username: {}\n" "На вашому рахунку: {}\n" "Ваш номер договору: {}\n" "Ваше ПІБ: {}\n" "Стан послуги: {}\n" "Ваш пакет: {}").format( database.data[0], database.data[1], database.data[2], database.data[3], net_on, database.data[5]), reply_markup=client_request) await db.message("BOT", 10001, msg.html_text, msg.date) else: msg = await message.answer(text=_("Ваш username: {}\n" "На вашому рахунку: {}\n" "Ваш номер договору: {}\n" "Ваше ПІБ: {}\n" "Стан послуги: {}\n" "Ваш пакет: {}").format( database.data[0], database.data[1], database.data[2], database.data[3], net_off, database.data[5]), reply_markup=client_request) await db.message("BOT", 10001, msg.html_text, msg.date) else: msg = await message.answer( text=_("Вказаний номер телефону не знайдено у нашому білінгу\n" "Якщо ви бажаєте підключитися - залиште заявку на підключення натиснувши кнопку"), reply_markup=unknown_request_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def contact(message: types.Message, state: FSMContext): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) data = await state.get_data() try: msg = await dp.bot.send_message(data.get("telegram_id"), message.text) await db.message("BOT", 10001, msg.html_text, msg.date) await state.reset_state() msg1 = await message.answer("Повідомлення відправлено", reply_markup=return_button) await db.message("BOT", 10001, msg1.html_text, msg.date) except Exception as e: msg = await message.answer(_("Повідомлення не було доставлене, скоріш за все telegram id не правильний"), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date) await state.reset_state()
async def request_client(message: types.Message, state: FSMContext): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) answer = message.text async with state.proxy() as data: data["Заявка"] = answer for admin in ADMINS: try: msg = await dp.bot.send_message(admin, f"Заявка на подключение: {data['Заявка']}") await db.message("BOT", 10001, msg.html_text, msg.date) except Exception as err: logging.exception(err) await state.reset_state() msg = await message.answer(text=_("Заявка в опрацюванні, чекайте зв'язку\n" "Можете повернутись у головне меню скориставшись кнопкою знизу"), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def process_successful_pay(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) contract = await db.select_contract(message.from_user.id) contract = contract[0] payload = message.successful_payment.total_amount // 100 await database.pay_balance(contract=contract[0], payload=payload) for admin in ADMINS: try: msg = await dp.bot.send_message(chat_id=admin, text=_("Користувач {} поповнив рахунок " "на {} {}").format( contract[0], payload, message.successful_payment.currency) ) await db.message("BOT", 10001, msg.html_text, msg.date) except Exception as err: logging.exception(err) msg = await dp.bot.send_message(chat_id=message.from_user.id, text=__("Ваш рахунок поповнено на {} {}!").format( payload, message.successful_payment.currency), reply_markup=return_button) await db.message("BOT", 10001, msg.html_text, msg.date)
async def text(message: types.Message, state: FSMContext): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) await state.update_data(telegram_id=message.text) msg = await message.answer(_("Тепер напишіть повідомлення для клієнта")) await db.message("BOT", 10001, msg.html_text, msg.date) await Contract.text.set()
async def request_for_ts(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) msg = await message.answer(text=_("Введіть ваше ПІБ, номер телефону та опишіть проблему"), reply_markup=ReplyKeyboardRemove()) await db.message("BOT", 10001, msg.html_text, msg.date) await Request.first()
async def change_lang(message: types.Message): await db.message(message.from_user.full_name, message.from_user.id, message.text, message.date) msg = await message.answer(text=_("Оберіть мову"), reply_markup=lang_change) await db.message("BOT", 10001, msg.html_text, msg.date)