def afk(update, context): args = update.effective_message.text.split(None, 1) user = update.effective_user if not user: # ignore channels return if user.id == 777000: return start_afk_time = time.time() if len(args) >= 2: reason = args[1] else: reason = "none" start_afk(update.effective_user.id, reason) REDIS.set(f'afk_time_{update.effective_user.id}', start_afk_time) fname = update.effective_user.first_name try: update.effective_message.reply_text("{} is now Away!".format(fname)) except BadRequest: pass
def __user_info__(user_id): is_afk = is_user_afk(user_id) text = "" if is_afk: since_afk = get_readable_time( (time.time() - float(REDIS.get(f'afk_time_{user_id}')))) text = "<i>This user is currently afk (away from keyboard).</i>" text += f"\n<i>Since: {since_afk}</i>" else: text = "<i>This user is currently isn't afk (away from keyboard).</i>" return text
def no_longer_afk(update, context): user = update.effective_user message = update.effective_message if not user: # ignore channels return if not is_user_afk(user.id): #Check if user is afk or not return end_afk_time = get_readable_time( (time.time() - float(REDIS.get(f'afk_time_{user.id}')))) REDIS.delete(f'afk_time_{user.id}') res = end_afk(user.id) if res: if message.new_chat_members: #dont say msg return firstname = update.effective_user.first_name try: message.reply_text( "*{}* is no longer AFK!\nTime you were AFK for: `{}`".format( firstname, end_afk_time), parse_mode=ParseMode.MARKDOWN) except Exception: return
def check_afk(update, context, user_id, fst_name, userc_id): if is_user_afk(user_id): reason = afk_reason(user_id) since_afk = get_readable_time( (time.time() - float(REDIS.get(f'afk_time_{user_id}')))) if reason == "none": if int(userc_id) == int(user_id): return res = "*{}* is AFK!\nSince: `{}`".format(fst_name, since_afk) m = update.effective_message.reply_text( res, parse_mode=ParseMode.MARKDOWN) else: if int(userc_id) == int(user_id): return res = "*{}* is AFK!\nSays it's because of:\n`{}`\nSince: `{}`".format( fst_name, reason, since_afk) m = update.effective_message.reply_text( res, parse_mode=ParseMode.MARKDOWN) time.sleep(3) m.delete()
def is_user_afk(userid): rget = REDIS.get(f'is_afk_{userid}') if rget: return True else: return False
def end_afk(userid): REDIS.delete(f'is_afk_{userid}') return True
def afk_reason(userid): return strb(REDIS.get(f'is_afk_{userid}'))
def start_afk(userid, reason): REDIS.set(f'is_afk_{userid}', reason)