tg-bot/tipbot/helpers/decorators.py
2021-05-07 23:50:39 -07:00

52 lines
1.8 KiB
Python

import logging
from functools import wraps
from tipbot import wownero
from tipbot import db
from tipbot import config
from tipbot.helpers.utils import is_tg_admin
def check_debug(f):
@wraps(f)
def decorated_function(*args, **kwargs):
msg = args[0].message
is_admin = is_tg_admin(msg.from_user["id"])
is_debug = getattr(config, 'DEBUG', True) == True
if is_debug:
if not is_admin:
msg.reply_text('I am in debug mode by my admin. Commands are disabled at the moment. Try again later.')
return False
return f(*args, **kwargs)
return decorated_function
def log_event(f):
@wraps(f)
def decorated_function(*args, **kwargs):
_d = ''
if config.DEBUG:
_d = ' (debug mode on)'
msg = args[0].message
logging.info(f'"{f.__name__}" invoked from {msg.from_user["id"]} ({msg.from_user["first_name"]}) - Full command: "{msg.text}"{_d}')
return f(*args, **kwargs)
return decorated_function
def wallet_rpc_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
wallet = wownero.Wallet()
if not wallet.connected:
logging.error(f'Wallet RPC interface is not available: {args[0].message}')
args[0].message.reply_text('Wallet RPC interface is not available right now. Try again later.')
return False
return f(*args, **kwargs)
return decorated_function
def registration_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
wallet = wownero.Wallet()
if not db.User.filter(telegram_id=args[0].message.from_user['id']):
args[0].message.reply_text('You are not yet registered. Issue the /register command.')
return False
return f(*args, **kwargs)
return decorated_function