def await_amount_to(cli, m): tg_id = m.from_user.id wallet = cache.get_active_wallet(tg_id) delete_inline_kb(cli, tg_id, cache.read_user_cache(tg_id, "last_msg_id")) fee = cache.get_fee() try: amount = int(m.text) if amount + fee > wallet["balance"]: raise Exception except: m.reply("Invalid amount") new_msg(cli, m, tg_id, "Invalid amount", kb.back_wallet(tg_id), "wallet_menu_id", "wallet_menu_id", "on_message") return cache.change_user_flag(tg_id, "await_to_amount", False) new_msg(cli, m, tg_id, texts.confirm_transaction(cache.read_user_cache(tg_id, "address_to"), amount), kb.confirm_tx(tg_id, amount), "wallet_menu_id", "wallet_menu_id", "on_message")
def confirm_tx(cli, cb): tg_id = cb.from_user.id action = cb.data.split('-')[1] address_to = cache.read_user_cache(tg_id, "address_to") if action == "send": amount = int(cb.data.split('-')[2]) WalletAPI.send_tx(tg_id, address_to, amount) cb.message.edit(texts.success_tx(amount, address_to)) delete_inline_kb(cli, tg_id, cache.read_user_cache(tg_id, "wallet_menu_id")) msg = cb.message.reply(texts.wallet_menu(tg_id), reply_markup=kb.wallet_menu()) cache.write_user_cache(tg_id, "wallet_menu_id", msg.message_id) elif action == "cancel": back_wallet(cli, cb)
def settings(tg_id): wallet = cache.get_active_wallet(tg_id) wallet_title = "None" wallets = cache.get_user_wallets(tg_id) if len(wallets) != 0: wallet_title = wallet["title"] mode = cache.read_user_cache(tg_id, "chat_mode") kb = InlineKeyboardMarkup([ #[InlineKeyboardButton(f"Current Wallet: {wallet_title}", callback_data=f"settings-current_wallet")], [ InlineKeyboardButton("Manage Wallet", callback_data="settings-manage_wallet") ], [ InlineKeyboardButton(f"Chat mode: {mode}", callback_data=f"settings-chat_mode-{mode}") ], [ InlineKeyboardButton("« Back to Wallet", callback_data="back_wallet") ] ]) return kb
def send_max(cli, cb): tg_id = cb.from_user.id wallet = cache.get_active_wallet(tg_id) fee = cache.get_fee() amount = wallet["balance"] - fee cache.change_user_flag(tg_id, "await_to_amount", False) new_msg(cli, cb, tg_id, texts.confirm_transaction(cache.read_user_cache(tg_id, "address_to"), amount), kb.confirm_tx(tg_id, amount), "wallet_menu_id", "wallet_menu_id", "on_callback")
def new_msg(cli, m, tg_id, text, kb, cache_read, cache_write, type): user_set = cache.read_user_cache(tg_id, "chat_mode") if user_set == "Historical": if type == "on_message": delete_inline_kb(cli, tg_id, cache.read_user_cache(tg_id, cache_read)) msg = cli.send_message(tg_id, text, reply_markup=kb) cache.write_user_cache(tg_id, cache_write, msg.message_id) if type == "on_callback": m.message.edit(m.message.text) msg = m.message.reply(text, reply_markup=kb) cache.write_user_cache(tg_id, cache_write, msg.message_id) if user_set == "Modern": if type == "on_message": delete_inline_kb(cli, tg_id, cache.read_user_cache(tg_id, cache_read)) msg = cli.send_message(tg_id, text, reply_markup=kb) cache.write_user_cache(tg_id, cache_write, msg.message_id) if type == "on_callback": msg = m.message.edit(text, reply_markup=kb) cache.write_user_cache(tg_id, cache_write, msg.message_id)
def wallet_title(cli, m): tg_id = m.from_user.id title = m.text cache.change_user_flag(tg_id, "await_wallet_title", False) wallet_id = cache.read_user_cache(tg_id, "last_wallet_id") WalletAPI.edit_title(wallet_id, title) new_msg(cli, m, tg_id, texts.settings_wallet(tg_id, wallet_id), kb.settings_wallet(tg_id, wallet_id), "wallet_menu_id", "wallet_menu_id", "on_message")
def await_address_to(cli, m): tg_id = m.from_user.id valid_address = WalletAPI.check_wallet(m.text) delete_inline_kb(cli, tg_id, cache.read_user_cache(tg_id, "last_msg_id")) if valid_address: cache.change_user_flag(tg_id, "await_to_address", False) cache.change_user_flag(tg_id, "await_to_amount", True) cache.write_user_cache(tg_id, "address_to", m.text) txt = "Enter amount in UAX" kbq = kb.max_amount(tg_id) else: txt = "invalid address" kbq = kb.back_wallet() new_msg(cli, m, tg_id, txt, kbq, "wallet_menu_id", "wallet_menu_id", "on_message")