# Dragon-Userbot - telegram userbot # Copyright (C) 2020-present Dragon Userbot Organization # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . import datetime from pyrogram import Client, filters, types from utils.db import db from utils.misc import modules_help, prefix # avoid using global variables afk_info = db.get( 'core.afk', 'afk_info', { 'start': 0, 'is_afk': False, 'reason': '', }, ) is_afk = filters.create(lambda _, __, ___: afk_info['is_afk']) is_support = filters.create(lambda _, __, message: message.chat.is_support) @Client.on_message( is_afk & (filters.private | filters.mentioned) & ~filters.channel & ~filters.me & ~filters.bot & ~is_support ) async def afk_handler(_, message: types.Message): start = datetime.datetime.fromtimestamp(afk_info['start']) end = datetime.datetime.now().replace(microsecond=0) afk_time = end - start await message.reply(f"I'm AFK {afk_time}\nReason: {afk_info['reason']}") @Client.on_message(filters.command('afk', prefix) & filters.me) async def afk(_, message): if len(message.text.split()) >= 2: reason = message.text.split(' ', maxsplit=1)[1] else: reason = 'None' afk_info['start'] = int(datetime.datetime.now().timestamp()) afk_info['is_afk'] = True afk_info['reason'] = reason await message.edit(f"I'm going AFK.\nReason: {reason}") db.set('core.afk', 'afk_info', afk_info) @Client.on_message(filters.command('unafk', prefix) & filters.me) async def unafk(_, message): if afk_info['is_afk']: start = datetime.datetime.fromtimestamp(afk_info['start']) end = datetime.datetime.now().replace(microsecond=0) afk_time = end - start await message.edit(f"I'm not AFK anymore.\nI was afk {afk_time}") afk_info['is_afk'] = False else: await message.edit("You weren't afk") db.set('core.afk', 'afk_info', afk_info) modules_help['afk'] = {'afk [reason]': 'Go to afk', 'unafk': 'Get out of AFK'}