diff --git a/tipbot/commands/register.py b/tipbot/commands/register.py index 3d088e7..ba145a6 100644 --- a/tipbot/commands/register.py +++ b/tipbot/commands/register.py @@ -1,6 +1,6 @@ -import logging +msgimport logging from tipbot import wownero -from tipbot import db +from tipbot.db import User from tipbot.helpers.decorators import wallet_rpc_required, log_event, check_debug @@ -8,32 +8,36 @@ from tipbot.helpers.decorators import wallet_rpc_required, log_event, check_debu @log_event @check_debug def register(update, context): - uid = update.message.from_user['id'] - un = update.message.from_user['first_name'] + wallet = wownero.Wallet() + msg = update.message + uid = msg.from_user['id'] + un = getattr(msg.from_user, 'username', None) + if un is None: + msg.reply_text('You need a username configured in Telegram to use this bot.') + return False - if db.User.filter(telegram_id=uid): - if db.User.filter(telegram_id=uid, telegram_user=un): - update.message.reply_text('You are already registered. Use /help to see available bot commands.') + if User.filter(telegram_id=uid): + if User.filter(telegram_id=uid, telegram_user=un): + msg.reply_text('You are already registered. Use /help to see available bot commands.') else: try: - u = db.User.get(telegram_id=uid) + u = User.get(telegram_id=uid) u.telegram_user = un u.save() - update.message.reply_text(f'You have been registered again as Telegram ID {uid} but with username {un}.') + msg.reply_text(f'You have been registered again as Telegram ID {uid} but with username {un}.') except Exception as e: - logging.error(f'Unable to update user in DB: {e}. Debug: {update.message}') - update.message.reply_text('Unable to update your existing account. Ask for help.') + logging.error(f'Unable to update user in DB: {e}. Debug: {msg}') + msg.reply_text('Unable to update your existing account. Ask for help.') return False else: try: - wallet = wownero.Wallet() account_index = wallet.new_account(label=un) except Exception as e: - logging.error(f'Unable to create a new account in wallet RPC: {e}. Debug: {update.message}') - update.message.reply_text('Unable to create a new account for you. Ask for help.') + logging.error(f'Unable to create a new account in wallet RPC: {e}. Debug: {msg}') + msg.reply_text('Unable to create a new account for you. Ask for help.') return False try: - u = db.User( + u = User( telegram_id=uid, telegram_user=un, account_index=account_index, @@ -43,8 +47,8 @@ def register(update, context): f'You have been registered as Telegram ID {uid} and username {un} and can now send and receive tips.', 'Ask for /help to see all available bot commands. Maybe start with /deposit to get your deposit address.' ] - update.message.reply_text(' '.join(reply_text)) + msg.reply_text(' '.join(reply_text)) except Exception as e: - logging.error(f'Unable to register user in DB: {e}. Debug: {update.message}') - update.message.reply_text('Unable to create a new account for you. Ask for help.') + logging.error(f'Unable to register user in DB: {e}. Debug: {msg}') + msg.reply_text('Unable to create a new account for you. Ask for help.') return False