tg-bot/tipbot/commands/register.py

63 lines
2.4 KiB
Python
Raw Normal View History

2020-08-09 06:40:20 +00:00
import logging
2020-08-06 05:52:13 +00:00
from tipbot import wownero
2020-08-09 06:39:19 +00:00
from tipbot.db import User
from tipbot.helpers.decorators import wallet_rpc_required, log_event, check_debug
2020-08-06 05:52:13 +00:00
@wallet_rpc_required
@log_event
@check_debug
2020-08-06 05:52:13 +00:00
def register(update, context):
2020-08-09 06:39:19 +00:00
wallet = wownero.Wallet()
msg = update.message
uid = msg.from_user['id']
un = getattr(msg.from_user, 'username', None)
if un is None:
2021-05-10 04:40:42 +00:00
msg.from_user.send_message('You need a username configured in Telegram to use this bot.')
msg.delete()
2020-08-09 06:39:19 +00:00
return False
2020-08-06 05:52:13 +00:00
2020-08-09 06:39:19 +00:00
if User.filter(telegram_id=uid):
if User.filter(telegram_id=uid, telegram_user=un):
2021-05-10 04:40:42 +00:00
msg.from_user.send_message('You are already registered. Use /help to see available bot commands.')
msg.delete()
2020-08-06 05:52:13 +00:00
else:
try:
2020-08-09 06:39:19 +00:00
u = User.get(telegram_id=uid)
2020-08-06 05:52:13 +00:00
u.telegram_user = un
u.save()
2021-05-10 04:40:42 +00:00
msg.from_user.send_message(f'You have been registered again as Telegram ID {uid} but with username {un}.')
msg.delete()
2020-08-06 05:52:13 +00:00
except Exception as e:
2020-08-09 06:39:19 +00:00
logging.error(f'Unable to update user in DB: {e}. Debug: {msg}')
2021-05-10 04:40:42 +00:00
msg.from_user.send_message('Unable to update your existing account. Ask for help.')
msg.delete()
2020-08-06 05:52:13 +00:00
return False
else:
try:
2021-05-08 07:08:39 +00:00
account = wallet.new_account(label=un)
2020-08-06 05:52:13 +00:00
except Exception as e:
2020-08-09 06:39:19 +00:00
logging.error(f'Unable to create a new account in wallet RPC: {e}. Debug: {msg}')
2021-05-10 04:40:42 +00:00
msg.from_user.send_message('Unable to create a new account for you. Ask for help.')
msg.delete()
2020-08-06 05:52:13 +00:00
return False
try:
2020-08-09 06:39:19 +00:00
u = User(
2020-08-06 05:52:13 +00:00
telegram_id=uid,
telegram_user=un,
2021-05-08 07:08:39 +00:00
account_index=account[0],
address=account[1]
2020-08-06 05:52:13 +00:00
)
u.save()
reply_text = [
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.'
]
2021-05-10 04:40:42 +00:00
msg.from_user.send_message(' '.join(reply_text))
msg.delete()
2020-08-06 05:52:13 +00:00
except Exception as e:
2020-08-09 06:39:19 +00:00
logging.error(f'Unable to register user in DB: {e}. Debug: {msg}')
2021-05-10 04:40:42 +00:00
msg.from_user.send_message('Unable to create a new account for you. Ask for help.')
msg.delete()
2020-08-06 05:52:13 +00:00
return False