You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import logging
|
|
from tipbot import wownero
|
|
from tipbot import db
|
|
from functools import wraps
|
|
|
|
|
|
def log_event(f):
|
|
@wraps(f)
|
|
def decorated_function(*args, **kwargs):
|
|
msg = args[0].message
|
|
logging.info(f'"{f.__name__}" invoked from {msg.from_user["id"]} ({msg.from_user["first_name"]}) - Full command: "{msg.text}"')
|
|
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
|