async def rem_locks(event): input_str = event.pattern_match.group(1).lower() peer_id = event.chat_id msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None changeinfo = None if input_str == "msg": msg = False what = "Pesan" elif input_str == "media": media = False what = "Media" elif input_str == "sticker": sticker = False what = "Sticker" elif input_str == "gif": gif = False what = "GIF" elif input_str == "game": gamee = False what = "Game" elif input_str == "inline": ainline = False what = "Inline" elif input_str == "poll": gpoll = False what = "Poll" elif input_str == "invite": adduser = False what = "Invite" elif input_str == "pin": cpin = False what = "Pin" elif input_str == "info": changeinfo = False what = "Info" elif input_str == "all": msg = False media = False sticker = False gif = False gamee = False ainline = False gpoll = False adduser = False cpin = False changeinfo = False what = "Semuanya" else: if not input_str: await event.edit("`Apa Yang Harus Saya Buka?`") return else: await event.edit( f"`✗ Jenis Kunci Yang Mau Anda Buka Tidak Valid` `{input_str}`" ) return unlock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: await event.client( EditChatDefaultBannedRightsRequest(peer=peer_id, banned_rights=unlock_rights)) await event.edit(f"`✓Berhasil Membuka Kunci {what}!`") except BaseException as e: await event.edit( f"`Apakah Anda Mempunyai Izin Melakukan Itu Disini?`\n**Kesalahan:** {str(e)}" ) return
async def auto_process_channel_msg(context): """ Event handler to delete channel messages and ban channel. """ if not redis_status(): return if not context.is_group: return # 匿名管理员 if not context.sender: return data = redis.get("antichannelmsg." + str(context.chat_id)) if not data: return filter_data = redis.get("antichannelmsg.filter:" + str(context.chat_id)) if filter_data is not None: participants_count = redis.get("antichannelmsg.participants_count:" + str(context.chat_id)) if participants_count is None: expire = 300 try: channel_data = await bot( GetFullChannelRequest(int(context.sender.id))) participants_count = channel_data.full_chat.participants_count expire = 3600 except: # noqa participants_count = 0 redis.set("antichannelmsg.participants_count:" + str(context.chat_id), participants_count, ex=expire) else: try: participants_count = int(participants_count) except ValueError: participants_count = 0 try: filter_int = int(filter_data) except ValueError: filter_int = -1 try: if not isinstance(context.sender, Channel): return data = data.decode().split(" ") # 白名单 if str(context.sender.id) in data: return # 频道订阅人数检测 if filter_data is not None and (filter_int != -1 and participants_count >= filter_int): return # 删除消息,封禁频道 try: await context.delete() entity = await context.client.get_input_entity(context.chat_id) user = await context.client.get_input_entity(context.sender.id) await context.client( EditBannedRequest(channel=entity, participant=user, banned_rights=ChatBannedRights( until_date=None, view_messages=True))) except ChatAdminRequiredError: redis.delete("antichannelmsg." + str(context.chat_id)) except: return try: await context.unpin() except ChatAdminRequiredError: redis.delete("antichannelmsg." + str(context.chat_id)) except: pass
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal APP_ID = int(os.environ.get("APP_ID", 6)) API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e") SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # string session for running on Heroku # some people upload their session files on GitHub or other third party hosting # websites, this might prevent the un-authorized use of the # confidential session files HU_STRING_SESSION = os.environ.get("HU_STRING_SESSION", None) # Get your own APPID from https://api.openweathermap.org/data/2.5/weather OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Send .get_id in any group to fill this value. PRIVATE_GROUP_BOT_API_ID = os.environ.get("PRIVATE_GROUP_BOT_API_ID", None) if PRIVATE_GROUP_BOT_API_ID: PRIVATE_GROUP_BOT_API_ID = int(PRIVATE_GROUP_BOT_API_ID) # Send .get_id in any channel to fill this value. ReQuired for @Manuel15 inspiration to work! PRIVATE_CHANNEL_BOT_API_ID = os.environ.get("PRIVATE_CHANNEL_BOT_API_ID", None) if PRIVATE_CHANNEL_BOT_API_ID: PRIVATE_CHANNEL_BOT_API_ID = int(PRIVATE_CHANNEL_BOT_API_ID) # This is required for the plugins involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "mrconfused") GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -100123456789)) # TG API limit. An album can have atmost 10 media! TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) # NO_LOG_P_M_S = bool(os.environ.get("NO_LOG_P_M_S", True)) GENIUS_API_TOKEN = os.environ.get("GENIUS", None) # Genius lyrics get this value from https://genius.com/developers both has same values GENIUS = os.environ.get("GENIUS_API_TOKEN", None) # # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # specify LOAD and NO_LOAD LOAD = [] # foloowing plugins won't work on Heroku, # because of their ephemeral file system MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # specify LOAD and NO_LOAD NO_LOAD = [ "notification_mtab_manager", "dbhelper", "fban_gban", "gban", "unbanmute", "antispam" ] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # For Databases # can be None in which case plugins requiring # Set to True if you want to block users that are spamming your PMs. SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .helpme command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 5)) # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", "\.") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set(int(x) for x in os.environ.get("SUDO_USERS", "").split()) # VeryStream only supports video formats VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) # Google Drive () # GOOGLE_CHROME_DRIVER = os.environ.get("GOOGLE_CHROME_DRIVER", None) CHROME_BIN = os.environ.get("CHROME_BIN", None) CHROME_DRIVER = os.environ.get("CHROME_DRIVER", "/app/.chromedriver/bin/chromedriver") GOOGLE_CHROME_BIN = os.environ.get("GOOGLE_CHROME_BIN", "/app/.apt/usr/bin/google-chrome") G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) G_DRIVE_AUTH_TOKEN_DATA = os.environ.get("G_DRIVE_AUTH_TOKEN_DATA", None) # AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) # os.makedirs(TMP_DOWNLOAD_DIRECTORY, exist_ok=True) # t_file = open(TMP_DOWNLOAD_DIRECTORY+"auth_token.txt","w") HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) # HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) # TELE_GRAM_2FA_CODE = os.environ.get("TELE_GRAM_2FA_CODE", None) # GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") # rapidleech plugins DOWNLOAD_PFP_URL_CLOCK = os.environ.get("DOWNLOAD_PFP_URL_CLOCK", None) OPEN_LOAD_LOGIN = os.environ.get("OPEN_LOAD_LOGIN", "0") OPEN_LOAD_KEY = os.environ.get("OPEN_LOAD_KEY", "0") # Google Chrome Selenium Stuff # taken from https://github.com/jaskaranSM/UniBorg/blob/9072e3580cc6c98d46f30e41edbe73ffc9d850d3/sample_config.py#L104-L106 TEMP_DIR = os.environ.get("TEMP_DIR", "./DOWNLOADS") # spotify stuff DEFAULT_BIO = os.environ.get("DEFAULT_BIO", None) SPOTIFY_BIO_PREFIX = os.environ.get("SPOTIFY_BIO_PREFIX", None) SPOTIFY_PASS = os.environ.get("SPOTIFY_PASS", None) SPOTIFY_USERNAME = os.environ.get("SPOTIFY_USERNAME", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) LYDIA_API = os.environ.get("LYDIA_API", None) DEFAULT_NAME = os.environ.get("DEFAULT_NAME", None) VIRUSTOTAL_API_KEY = os.environ.get("VIRUSTOTAL_API_KEY", None) # # define "spam" in PMs MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 5)) # leave this blank, should be automatically filled for Heroku.com users PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID) # define the "types" that should be uplaoded as streamable TL_VID_STREAM_TYPES = ("MKV", "MP4", "WEBM") TL_MUS_STREAM_TYPES = ("MP3", "WAV", "FLAC") YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) ANTI_SPAMBOT = os.environ.get("ANTI_SPAMBOT", None) ANTI_SPAMBOT_SHOUT = os.environ.get("ANTI_SPAMBOT_SHOUT", None) #API_TOKEN for quote plugin API_TOKEN = os.environ.get("API_TOKEN", None) # MONGO_DB_URI = os.environ.get("MONGO_DB_URI", None) BOTLOG = os.environ.get("BOTLOG", None) # MONGOCLIENT = pymongo.MongoClient(MONGO_DB_URI) # MONGO = MONGOCLIENT.userbot KUTT_IT_API_KEY = os.environ.get("KUTT_IT_API_KEY", None) watermark_path = os.environ.get("watermark_path", None) TZ = os.environ.get("TZ", None) # RSS_POST_MSG_GROUP_ID = map(int, os.environ.get("RSS_POST_MSG_GROUP_ID", None).split()) RSS_POST_MSG_GROUP_ID = os.environ.get("RSS_POST_MSG_GROUP_ID", None) if RSS_POST_MSG_GROUP_ID: RSS_POST_MSG_GROUP_ID = int(RSS_POST_MSG_GROUP_ID) SPAM_WATCH_API = os.environ.get("SPAM_WATCH_API", None)
async def locks(event): input_str = event.pattern_match.group(1).lower() peer_id = event.chat_id msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None changeinfo = None if input_str == "msg": msg = True what = "messages" elif input_str == "media": media = True what = "media" elif input_str == "sticker": sticker = True what = "stickers" elif input_str == "gif": gif = True what = "GIFs" elif input_str == "game": gamee = True what = "games" elif input_str == "inline": ainline = True what = "inline bots" elif input_str == "poll": gpoll = True what = "polls" elif input_str == "invite": adduser = True what = "invites" elif input_str == "pin": cpin = True what = "pins" elif input_str == "info": changeinfo = True what = "chat info" elif input_str == "all": msg = True media = True sticker = True gif = True gamee = True ainline = True gpoll = True adduser = True cpin = True changeinfo = True what = "everything" else: if not input_str: await edit_or_reply(event, "`Need something to lock sur!!`🚶") return else: await edit_or_reply(event, f"🤐 `Invalid lock type:` {input_str}") return lock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: await event.client( EditChatDefaultBannedRightsRequest(peer=peer_id, banned_rights=lock_rights)) await edit_or_reply( event, f"[{DEFAULTUSER}](tg://user?id={kraken}) Locked `{what}` \n__Cause its Rest Time Nimba!!__" ) except BaseException as e: await edit_or_reply( event, f"`Do I have proper rights for that ??`\n**Error:** {str(e)}") return
async def ban(catty): chat = await catty.get_chat() admin = chat.admin_rights creator = chat.creator # If not admin and not creator, return if not admin and not creator: await edit_or_reply(catty, NO_ADMIN) return catevent = await edit_or_reply(catty, "`baning....`") user, reason = await get_user_from_event(catty) if not user: return if reason: reason = reason.split(" ", 1) hmm = len(reason) cattime = reason[0] reason = reason[1] if hmm == 2 else None else: await catevent.edit("you havent mentioned time check `.info tadmin`") return self_user = await catty.client.get_me() ctime = await extract_time(catty, cattime) if not ctime: await catevent.edit( f"Invalid time type specified. Expected m , h , d or w not as {cattime}" ) return if user.id == self_user.id: await catevent.edit(f"Sorry, I can't ban my self") return await catevent.edit("`Whacking the pest!`") try: await catty.client( EditBannedRequest( catty.chat_id, user.id, ChatBannedRights(until_date=ctime, view_messages=True), )) except BadRequestError: await catevent.edit(NO_PERM) return # Helps ban group join spammers more easily try: reply = await catty.get_reply_message() if reply: await reply.delete() except BadRequestError: await catevent.edit( "`I dont have message nuking rights! But still he was banned!`") return # Delete message and then tell that the command # is done gracefully # Shout out the ID, so that fedadmins can fban later if reason: await catevent.edit( f"{user.first_name} was banned in {catty.chat.title}\n" f"banned for {cattime}\n" f"Reason:`{reason}`") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TBAN\n" f"**User : **[{user.first_name}](tg://user?id={user.id})\n" f"**Chat : **{catty.chat.title}(`{catty.chat_id}`)\n" f"**Banned untill : **`{cattime}`\n" f"**Reason : **__{reason}__", ) else: await catevent.edit( f"{user.first_name} was banned in {catty.chat.title}\n" f"banned for {cattime}\n") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TBAN\n" f"**User : **[{user.first_name}](tg://user?id={user.id})\n" f"**Chat : **{catty.chat.title}(`{catty.chat_id}`)\n" f"**Banned untill : **`{cattime}`", )
from telethon.tl.functions.channels import EditBannedRequest from telethon.tl.types import ChatBannedRights from uniborg.util import admin_cmd logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s', level=logging.WARNING) logger = logging.getLogger(__name__) unbanned_rights = ChatBannedRights( until_date=None, view_messages=None, send_messages=None, send_media=None, send_stickers=None, send_gifs=None, send_games=None, send_inline=None, embed_links=None ) muted_rights = ChatBannedRights( until_date=None, view_messages=None, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True
async def _(event): if event.fwd_from: return if event.is_private: return False input_str = event.pattern_match.group(1) if input_str: chat = await event.get_chat() if not (chat.admin_rights or chat.creator): await eod(event, "`You aren't an admin here!`") return False p = 0 b = 0 c = 0 d = 0 e = [] m = 0 n = 0 y = 0 w = 0 o = 0 q = 0 r = 0 hell = await edit_or_reply(event, "Searching Participant Lists.") async for i in bot.iter_participants(event.chat_id): p = p + 1 # # Note that it's "reversed". You must set to ``True`` the permissions # you want to REMOVE, and leave as ``None`` those you want to KEEP. rights = ChatBannedRights(until_date=None, view_messages=True) if isinstance(i.status, UserStatusEmpty): y = y + 1 if "y" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( hell, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if isinstance(i.status, UserStatusLastMonth): m = m + 1 if "m" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( hell, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if isinstance(i.status, UserStatusLastWeek): w = w + 1 if "w" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if isinstance(i.status, UserStatusOffline): o = o + 1 if "o" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if isinstance(i.status, UserStatusOnline): q = q + 1 if "q" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if isinstance(i.status, UserStatusRecently): r = r + 1 if "r" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 if i.bot: b = b + 1 if "b" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) break else: c = c + 1 elif i.deleted: d = d + 1 if "d" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await eod( event, "I need admin priveleges to perform this action!") e.append(str(e)) else: c = c + 1 elif i.status is None: n = n + 1 if input_str: required_string = """Kicked {} / {} users Deleted Accounts: {} UserStatusEmpty: {} UserStatusLastMonth: {} UserStatusLastWeek: {} UserStatusOffline: {} UserStatusOnline: {} UserStatusRecently: {} Bots: {} None: {}""" await hell.edit(required_string.format(c, p, d, y, m, w, o, q, r, b, n)) await asyncio.sleep(5) await hell.edit("""Total: {} users Deleted Accounts: {} UserStatusEmpty: {} UserStatusLastMonth: {} UserStatusLastWeek: {} UserStatusOffline: {} UserStatusOnline: {} UserStatusRecently: {} Bots: {} None: {}""".format(p, d, y, m, w, o, q, r, b, n))
from MashaRoBot.modules.sql.night_mode_sql import add_nightmode, rmnightmode, get_all_chat_id, is_nightmode_indb from telethon.tl.types import ChatBannedRights from apscheduler.schedulers.asyncio import AsyncIOScheduler from telethon import functions from MashaRoBot.events import register from MashaRoBot import telethn, OWNER_ID import os from telethon import * from telethon import Button, custom, events hehes = ChatBannedRights( until_date=None, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, send_polls=True, invite_users=True, pin_messages=True, change_info=True, ) openhehe = ChatBannedRights( until_date=None, send_messages=False, send_media=False, send_stickers=False, send_gifs=False, send_games=False, send_inline=False, send_polls=False,
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal LOCATION = os.environ.get("LOCATION", None) ALIVE_TEXT = os.environ.get("ALIVE_TEXT", None) OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Get your own ACCESS_KEY from http://api.screenshotlayer.com/api/capture SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Send .get_id in any group to fill this value. # This is required for the modules involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "Friday") # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) DEEP_API_KEY = os.environ.get("DEEP_API_KEY", None) NOSPAMPLUS_TOKEN = os.environ.get("NOSPAMPLUS_TOKEN", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -1001198699233)) # TG API limit. An album can have atmost 10 media! GOOGLE_SEARCH_COUNT_LIMIT = int( os.environ.get("GOOGLE_SEARCH_COUNT_LIMIT", 9)) TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) PRIVATE_GROUP_BOT_API_ID = int( os.environ.get("PRIVATE_GROUP_BOT_API_ID", False)) # # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want fridaybot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # maximum number of messages for antiflood MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) # chat ids or usernames, it is recommended to use chat ids, # providing usernames means an additional overhead for the user CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # Set to True if you want to block users that are spamming your PMs. SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) NO_P_M_SPAM = bool(os.environ.get("NO_P_M_SPAM", False)) # define "spam" in PMs NO_SONGS = bool(os.environ.get("NO_SONGS", False)) MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 3)) # set to True if you want to log PMs to your PM_LOGGR_BOT_API_ID NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", False)) # send .get_id in any channel to forward all your NEW PMs to this group PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID) # For Databases # can be None in which case modules requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .helpme command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 5)) # specify command handler that should be used for the modules # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", "\.") SUDO_COMMAND_HAND_LER = os.environ.get("SUDO_COMMAND_HAND_LER", "\.") BOT_HANDLER = os.environ.get("BOT_HANDLER", "^/") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set( int(x) for x in os.environ.get("SUDO_USERS", "").split()) WHITELIST_USERS = set( int(x) for x in os.environ.get("WHITELIST_USERS", "").split()) BLACKLIST_USERS = set( int(x) for x in os.environ.get("BLACKLIST_USERS", "").split()) DEVLOPERS = set( int(x) for x in os.environ.get("DEVLOPERS", "").split()) OWNER_ID = set(int(x) for x in os.environ.get("OWNER_ID", "").split()) SUPPORT_USERS = set( int(x) for x in os.environ.get("SUPPORT_USERS", "").split()) # Very Stream VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") TEMP_DIR = os.environ.get("TEMP_DIR", None) CHANNEL_ID = int(os.environ.get("CHANNEL_ID", -100)) # Google Chrome Stuff CHROME_DRIVER = os.environ.get("CHROME_DRIVER", "/usr/bin/chromedriver") GOOGLE_CHROME_BIN = os.environ.get("GOOGLE_CHROME_BIN", "/usr/bin/google-chrome") # Google Drive () G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) if AUTH_TOKEN_DATA != None: os.makedirs(TMP_DOWNLOAD_DIRECTORY) t_file = open(TMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close() YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) # MongoDB MONGO_URI = os.environ.get("MONGO_URI", None) # Lydia API LYDIA_API = os.environ.get("LYDIA_API", None) PRIVATE_GROUP_ID = int(os.environ.get("PRIVATE_GROUP_ID", False)) PLUGIN_CHANNEL = int(os.environ.get("PLUGIN_CHANNEL", False)) SUB_TO_MSG_ASSISTANT = os.environ.get("SUB_TO_MSG_ASSISTANT", False) NEWS_CHANNEL_ID = int(os.environ.get("NEWS_CHANNEL_ID", False)) FBAN_GROUP = int(os.environ.get("FBAN_GROUP", False)) PM_DATA = os.environ.get("PM_DATA", "ENABLE") DEEP_AI = os.environ.get("DEEP_AI", None) ENABLE_ASSISTANTBOT = os.environ.get("ENABLE_ASSISTANTBOT", "ENABLE") TAG_FEATURE = os.environ.get("TAG_FEATURE", "DISABLE") JTM_CHANNEL_ID = int(os.environ.get("JTM_CHANNEL_ID", False)) JTM_CHANNEL_USERNAME = os.environ.get("JTM_CHANNEL_USERNAME", None) ANTISPAM_FEATURE = os.environ.get("ANTISPAM_FEATURE", "ENABLE") ASSISTANT_LOG = int(os.environ.get("ASSISTANT_LOG", False)) OPEN_LOAD_LOGIN = os.environ.get("OPEN_LOAD_LOGIN", None) SUPERHERO_API_KEY = os.environ.get("SUPERHERO_API_KEY", None) FOOTBALL_API_KEY = os.environ.get("FOOTBALL_API_KEY", None) VIRUSTOTAL_API_KEY = os.environ.get("VIRUSTOTAL_API_KEY", None) GPLINKS_API_KEY = os.environ.get("GPLINKS_API_KEY", None) OPEN_LOAD_KEY = os.environ.get("OPEN_LOAD_KEY", None) UPSTREAM_REPO = os.environ.get( "UPSTREAM_REPO", "https://github.com/Inukaasith/VirtualUserbot") ALIVE_IMAGE = os.environ.get( "ALIVE_IMAGE", "https://telegra.ph/file/4e1364fb18f899ad47dec.png") ASSISTANT_START_PIC = os.environ.get( "ASSISTANT_START_PIC", "https://telegra.ph/file/4e1364fb18f899ad47dec.png", ) TESSDATA_PREFIX = os.environ.get( "TESSDATA_PREFIX", "/usr/share/tesseract-ocr/4.00/tessdata") CHROME_BIN = os.environ.get("CHROME_BIN", "/app/.apt/usr/bin/google-chrome") SPAMWATCH_API = os.environ.get("SPAMWATCH_API", None) # SpamWatch, CAS, SpamProtection ban Needed or not ANTISPAMBOT_BAN = os.environ.get("ANTISPAMBOT_BAN", False)
async def _(event): if event.fwd_from: return if event.is_private: return False input_str = event.pattern_match.group(1) if input_str: chat = await event.get_chat() if not chat.admin_rights and not chat.creator: await edit_or_reply(event, "`عـذرا انت لسـت ادمن هنـا`") return False p = 0 b = 0 c = 0 d = 0 e = [] m = 0 n = 0 y = 0 w = 0 o = 0 q = 0 r = 0 et = await edit_or_reply(event, "جـاري جـمع المـعلومـات 🔰.") async for i in event.client.iter_participants(event.chat_id): p += 1 # # Note that it's "reversed". You must set to ``True`` the permissions # you want to REMOVE, and leave as ``None`` those you want to KEEP. rights = ChatBannedRights(until_date=None, view_messages=True) if isinstance(i.status, UserStatusEmpty): y += 1 if "y" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break if isinstance(i.status, UserStatusLastMonth): m += 1 if "m" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break if isinstance(i.status, UserStatusLastWeek): w += 1 if "w" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break if isinstance(i.status, UserStatusOffline): o += 1 if "o" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break else: c += 1 if isinstance(i.status, UserStatusOnline): q += 1 if "q" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break else: c += 1 if isinstance(i.status, UserStatusRecently): r += 1 if "r" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break if i.bot: b += 1 if "b" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) break else: c += 1 elif i.deleted: d += 1 if "d" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("أحتاج امتيازات المسؤول لأداء هذا الإجراء!") e.append(str(e)) elif i.status is None: n += 1 if input_str: required_string = """المـطرودين {} / {} الاعـضاء الحسابات المحذوفة : {} حالة المستخدم فارغة : {} النشطـون منذ شـهر : {} النشـطون منذ أسبوع : {} الغـير نشـط : {} النـشطون الان : {} النشـطون قبـل قليـل : {} البـوتات : {} مـلاحظة : {}""" await et.edit(required_string.format(c, p, d, y, m, w, o, q, r, b, n)) await sleep(5) await et.edit("""Total: {} users الحسابات المحذوفة: {} حالة المستخدم فارغة : {} الحسابات النشطـون منذ شـهر : {} النشطـون منذ أسبوع : {} الـغير نشـطون : {} النـشطون الان: {} النشطـون قبـل قليـل: {} البـوتات : {} مـلاحظة : {}""".format(p, d, y, m, w, o, q, r, b, n))
async def _(event): if event.fwd_from: return if event.is_private: return False input_str = event.pattern_match.group(1) if input_str: chat = await event.get_chat() if not chat.admin_rights and not chat.creator: await edit_or_reply(event, "**⪼ يجب ان تكون مشرف اولاً 𓆰**") return False p = 0 b = 0 c = 0 d = 0 e = [] m = 0 n = 0 y = 0 w = 0 o = 0 q = 0 r = 0 et = await edit_or_reply(event, "**↫ البحث في قوائم المشاركين ⇲**") async for i in event.client.iter_participants(event.chat_id): p += 1 # # Note that it's "reversed". You must set to ``True`` the permissions # you want to REMOVE, and leave as ``None`` those you want to KEEP. rights = ChatBannedRights(until_date=None, view_messages=True) if isinstance(i.status, UserStatusEmpty): y += 1 if "y" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break if isinstance(i.status, UserStatusLastMonth): m += 1 if "m" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break if isinstance(i.status, UserStatusLastWeek): w += 1 if "w" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break if isinstance(i.status, UserStatusOffline): o += 1 if "o" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break else: c += 1 if isinstance(i.status, UserStatusOnline): q += 1 if "q" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break else: c += 1 if isinstance(i.status, UserStatusRecently): r += 1 if "r" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break if i.bot: b += 1 if "b" in input_str: status, e = await ban_user(event.chat_id, i, rights) if not status: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) break else: c += 1 elif i.deleted: d += 1 if "d" in input_str: status, e = await ban_user(event.chat_id, i, rights) if status: c += 1 else: await et.edit("**↫ احتاج الى صلاحيات المشرف اولا ⇲**") e.append(str(e)) elif i.status is None: n += 1 if input_str: required_string = """𓆰 المطور حسين كريم 𓆪\n𓍹ⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧ𓍻 **⌔∮ المطرودين {} / {} المستخدمين **⌔∮ الحسابات المحذوفه :** {} **⌔∮ اخر ظهور منذ زمن طويل :** {} **⌔∮ اخر ظهور منذ شهر :** {} **⌔∮ اخر ظهور منذ اسبوع :** {} **⌔∮ متصل :** {} **⌔∮ غير متصل :** {} **⌔∮ اخر ظهور منذ قليل :** {} **⌔∮ البوتات :** {} 𓍹ⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧ𓍻""" await et.edit(required_string.format(c, p, d, y, m, w, o, q, r, b, n)) await sleep(5) await et.edit( """𓆰 المطور حسين كريم 𓆪\n𓍹ⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧ𓍻 **⌔∮ العدد : ** {} مستخدم **⌔∮ الحسابات المحذوفه :** {} **⌔∮ اخر ظهور منذ زمن طويل :** {} **⌔∮ اخر ظهور منذ شهر :** {} **⌔∮ اخر ظهور منذ اسبوع :** {} **⌔∮ متصل :** {} **⌔∮ غير متصل :** {} **⌔∮ اخر ظهور منذ قليل :** {} **⌔∮ البوتات :** {} 𓍹ⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧⵧ𓍻""".format( p, d, y, m, w, o, q, r, b, n ) )
async def tmuter(catty): chat = await catty.get_chat() admin = chat.admin_rights creator = chat.creator # If not admin and not creator, return if not admin and not creator: await catty.edit(NO_ADMIN) return user, reason = await get_user_from_event(catty) if user: pass else: return if reason: reason = reason.split(' ', 1) hmm = len(reason) if hmm == 2: cattime = reason[0] reason = reason[1] else: cattime = reason[0] reason = None else: await catty.edit("you havent mentioned time check `.info tadmin`") return self_user = await catty.client.get_me() ctime = await extract_time(catty, cattime) if not ctime: await catty.edit( f"Invalid time type specified. Expected m , h , d or w not as {cattime}" ) return if user.id == self_user.id: await catty.edit(f"Sorry, I can't mute my self") return try: await catty.client( EditBannedRequest( catty.chat_id, user.id, ChatBannedRights(until_date=ctime, send_messages=True))) # Announce that the function is done if reason: await catty.edit( f"{user.first_name} was muted in {catty.chat.title}\n" f"Mutted until {cattime}\n" f"Reason:`{reason}`") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TMUTE\n" f"USER: [{user.first_name}](tg://user?id={user.id})\n" f"CHAT: {catty.chat.title}(`{catty.chat_id}`)\n" f"MUTTED_UNTILL : `{cattime}`\n" f"REASON : {reason}") else: await catty.edit( f"{user.first_name} was muted in {catty.chat.title}\n" f"Mutted until {cattime}\n") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TMUTE\n" f"USER: [{user.first_name}](tg://user?id={user.id})\n" f"CHAT: {catty.chat.title}(`{catty.chat_id}`)\n" f"MUTTED_UNTILL : `{cattime}`") # Announce to logging group except UserIdInvalidError: return await catty.edit("`Uh oh my mute logic broke!`")
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal APP_ID = int(os.environ.get("APP_ID", 6)) API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e") SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # string session for running on Heroku # some people upload their session files on GitHub or other third party hosting # websites, this might prevent the un-authorized use of the # confidential session files # Get your own APPID from https://api.openweathermap.org/data/2.5/weather OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Send .get_id in any group to fill this value. PRIVATE_GROUP_BOT_API_ID = os.environ.get("PRIVATE_GROUP_BOT_API_ID", None) if PRIVATE_GROUP_BOT_API_ID: PRIVATE_GROUP_BOT_API_ID = int(PRIVATE_GROUP_BOT_API_ID) # Send .get_id in any channel to fill this value. ReQuired for @Manuel15 # inspiration to work! PRIVATE_CHANNEL_BOT_API_ID = os.environ.get("PRIVATE_CHANNEL_BOT_API_ID", None) if PRIVATE_CHANNEL_BOT_API_ID: PRIVATE_CHANNEL_BOT_API_ID = int(PRIVATE_CHANNEL_BOT_API_ID) # This is required for the plugins involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from # https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "mrconfused") # Set False to stop deleting old welcome messages CLEAN_WELCOME = os.environ.get("CLEAN_WELCOME", True) # github vars GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # TG API limit. An album can have atmost 10 media! TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) NO_LOG_P_M_S = bool(os.environ.get("NO_LOG_P_M_S", True)) THUMB_IMAGE = os.environ.get( "THUMB_IMAGE", "https://telegra.ph/file/3d60313110c58684b31ea.jpg") # Genius lyrics get this value from https://genius.com/developers both has # same values GENIUS_API_TOKEN = os.environ.get("GENIUS_API_TOKEN", None) # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # specify LOAD and NO_LOAD LOAD = [] # foloowing plugins won't work on Heroku, # because of their ephemeral file system MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # specify LOAD and NO_LOAD NO_LOAD = [ "notification_mtab_manager", "dbhelper", "fban_gban", "unbanmute", ] # in alive message pic ALIVE_PIC = os.environ.get("ALIVE_PIC", None) # in pm permit pic PMPERMIT_PIC = os.environ.get("PMPERMIT_PIC", None) CUSTOM_PMPERMIT_TEXT = os.environ.get("CUSTOM_PMPERMIT_TEXT", None) # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # For Databases # can be None in which case plugins requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .help command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 7)) # number of rows of buttons to be displayed in .helpme command NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD", 3)) # emoji to be displayed in .help EMOJI_TO_DISPLAY_IN_HELP = os.environ.get("EMOJI_TO_DISPLAY_IN_HELP", " ") # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", r"\.") SUDO_COMMAND_HAND_LER = os.environ.get("SUDO_COMMAND_HAND_LER", r"\.") HELP_INLINETYPE = os.environ.get("HELP_INLINETYPE", None) # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set(int(x) for x in os.environ.get("SUDO_USERS", "").split()) # Google Drive () CHROME_BIN = os.environ.get("CHROME_BIN", "/usr/bin/google-chrome") CHROME_DRIVER = os.environ.get("CHROME_DRIVER", "/usr/bin/chromedriver") G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) G_DRIVE_FOLDER_ID = os.environ.get("G_DRIVE_FOLDER_ID", None) G_DRIVE_AUTH_TOKEN_DATA = os.environ.get("G_DRIVE_AUTH_TOKEN_DATA", None) G_DRIVE_DATA = os.environ.get("G_DRIVE_DATA", None) # AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) # os.makedirs(TMP_DOWNLOAD_DIRECTORY, exist_ok=True) # t_file = open(TMP_DOWNLOAD_DIRECTORY+"auth_token.txt","w") HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) # For transfer channel TELE_GRAM_2FA_CODE = os.environ.get("TELE_GRAM_2FA_CODE", None) GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") # rapidleech plugins DOWNLOAD_PFP_URL_CLOCK = os.environ.get("DOWNLOAD_PFP_URL_CLOCK", None) # Google Chrome Selenium Stuff # taken from # https://github.com/jaskaranSM/UniBorg/blob/9072e3580cc6c98d46f30e41edbe73ffc9d850d3/sample_config.py#L104-L106 TEMP_DIR = os.environ.get("TEMP_DIR", "./temp/") # spotify stuff DEFAULT_BIO = os.environ.get("DEFAULT_BIO", None) SPOTIFY_BIO_PREFIX = os.environ.get("SPOTIFY_BIO_PREFIX", None) SPOTIFY_PASS = os.environ.get("SPOTIFY_PASS", None) SPOTIFY_USERNAME = os.environ.get("SPOTIFY_USERNAME", None) LYDIA_API = os.environ.get("LYDIA_API", None) DEFAULT_NAME = os.environ.get("DEFAULT_NAME", None) # define "spam" in PMs MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 5)) # leave this blank, should be automatically filled for Heroku.com users PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID) # to work manager.py DUAL_LOG = os.environ.get("DUAL_LOG", False) YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) # MONGOCLIENT = pymongo.MongoClient(MONGO_DB_URI) # MONGO = MONGOCLIENT.userbot # JustWatch Country WATCH_COUNTRY = os.environ.get("WATCH_COUNTRY", "IN") TZ = os.environ.get("TZ", None) # RSS_POST_MSG_GROUP_ID = map(int, os.environ.get("RSS_POST_MSG_GROUP_ID", None).split()) RSS_POST_MSG_GROUP_ID = os.environ.get("RSS_POST_MSG_GROUP_ID", None) if RSS_POST_MSG_GROUP_ID: RSS_POST_MSG_GROUP_ID = int(RSS_POST_MSG_GROUP_ID) # SpamWatch API you can get it from get api from http://t.me/SpamWatchBot?start=token SPAMWATCH_API = os.environ.get("SPAMWATCH_API", None) # SpamWatch, CAS, SpamProtection ban Needed or not ANTISPAMBOT_BAN = os.environ.get("ANTISPAMBOT_BAN", False)
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal APP_ID = int(os.environ.get("APP_ID", 6)) API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e") # Photo Chat - Get this value from http://antiddos.systems API_TOKEN = os.environ.get("API_TOKEN", "15e05de0-0357-4553-b39c-d614443ed91e") # Get this value from https://t.me/SitiSchu! Please do not steal, group for support https://t.me/SpamWatchSupport SPAMWATCH_API = os.environ.get( "SPAMWATCH_API", "hAlogsz5yVFw4TYjIf6I993YFpZj~AT_5wCNrwnY3YeekgeEH1g62hO1hog02UHO") # Genius lyrics get this value from https://genius.com/developers both has same values GENIUS_API_TOKEN = os.environ.get("GENIUS", None) # Genius lyrics get this value from https://genius.com/developers both has same values GENIUS = os.environ.get("GENIUS_API_TOKEN", None) # Default alive name for .on cmd ALIVE_NAME = os.environ.get("ALIVE_NAME", None) # Userbot logging feature switch. BOTLOG = bool(os.environ.get("BOTLOG", "False")) # PhotoChat - don't change this value from http://antiddos.systems API_URL = os.environ.get("API_URL", "http://antiddos.systems") # string session for running on Heroku # some people upload their session files on GitHub or other third party hosting # websites, this might prevent the un-authorized use of the # confidential session files HU_STRING_SESSION = os.environ.get("HU_STRING_SESSION", None) # Get your own APPID from https://api.openweathermap.org/data/2.5/weather OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Your City WEATHER_DEFCITY = os.environ.get("WEATHER_DEFCITY", None) # Get your own ACCESS_KEY from http://api.screenshotlayer.com/api/capture SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Send .get_id in any group to fill this value. PRIVATE_GROUP_BOT_API_ID = int( os.environ.get("PRIVATE_GROUP_BOT_API_ID", -100123456789)) # Send .get_id in any channel to fill this value. ReQuired for @Manuel15 inspiration to work! PRIVATE_CHANNEL_BOT_API_ID = int( os.environ.get("PRIVATE_CHANNEL_BOT_API_ID", -100123456789)) # This is required for the plugins involving the file system. TEMP_DOWNLOAD_DIRECTORY = os.environ.get("TEMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "UniBorg") # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -100123456789)) # TG API limit. An album can have atmost 10 media! TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) # # # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # maximum number of messages for antiflood MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) # chat ids or usernames, it is recommended to use chat ids, # providing usernames means an additional overhead for the user CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # specify LOAD and NO_LOAD LOAD = [] # foloowing plugins won't work on Heroku, # ⚡Remove This To Make Them Work But Would Make Bot Unstable AF...⚡ NO_LOAD = [ "left", "autores", "hand", ] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # you can set any name here SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) # Get this from Github GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # Set to True if you want to block users that are spamming your PMs. NO_P_M_SPAM = bool(os.environ.get("NO_P_M_SPAM", False)) PLUGIN_CHANNEL = os.environ.get("PLUGIN_CHANNEL", "") # define "spam" in PMs MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 3)) # set to True if you want to log PMs to your PM_LOGGR_BOT_API_ID NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", False)) # send .get_id in any channel to forward all your NEW PMs to this group PM_LOGGR_BOT_API_ID = int(os.environ.get("PM_LOGGR_BOT_API_ID", "-100")) # For Databases # can be None in which case plugins requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # For Databases # can be None in which case plugins requiring # DataBase would not work MONGO_URI = os.environ.get("MONGO_URI", None) # number of rows of buttons to be displayed in .helpme command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 5)) # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", "\.") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set(int(x) for x in os.environ.get("SUDO_USERS", "").split()) # VeryStream only supports video formats VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) # for temporary saving files on UserBot TEMP_DIR = os.environ.get("TEMP_DIR", None) # This is required for few things CHANNEL_ID = os.environ.get("CHANNEL_ID", None) # Google Drive () G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) if AUTH_TOKEN_DATA != None: if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY): os.makedirs(TEMP_DOWNLOAD_DIRECTORY) t_file = open(TEMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close() # TELE_GRAM_2FA_CODE = os.environ.get("TELE_GRAM_2FA_CODE", None) # GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") # rapidleech plugins # don't change the values OPEN_LOAD_LOGIN = os.environ.get("OPEN_LOAD_LOGIN", "100") OPEN_LOAD_KEY = os.environ.get("OPEN_LOAD_KEY", "100") # Google Chrome Selenium Stuff # taken from https://github.com/jaskaranSM/UniBorg/blob/9072e3580cc6c98d46f30e41edbe73ffc9d850d3/sample_config.py#L104-L106 GOOGLE_CHROME_DRIVER = os.environ.get("GOOGLE_CHROME_DRIVER", None) GOOGLE_CHROME_BIN = os.environ.get("GOOGLE_CHROME_BIN", None) # Chrome Driver and Headless Google Chrome Binaries CARBON_DRIVER = os.environ.get("CARBON_DRIVER", None) CARBON_BIN = os.environ.get("CARBON_BIN", None) # get your value from https://Intellivoid.info LYDIA_API = os.environ.get("LYDIA_API", None) LYDIA_ANTI_PM = bool(os.environ.get("LYDIA_ANTI_PM", "True")) # get your value from YouTube or Google. YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) # Heroku API_Key is found under "dashboard.heroku.com/account" HEROKU_MEMEZ = bool(os.environ.get("HEROKU_MEMEZ", "False")) HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) # required for Carbor CHROME_DRIVER = os.environ.get("CHROME_DRIVER", None) CHROME_BIN = os.environ.get("CHROME_BIN", None) # define "repo_link" in conig_vars REPO_LINK = os.environ.get( "REPO_LINK", "https://github.com/amitsharma123234/X-tra-TG-plus.git") # define "UPSTREAM_REPO_URL" in conig_vars UPSTREAM_REPO_URL = os.environ.get( "UPSTREAM_REPO_URL", "https://github.com/amitsharma123234/X-tra-TG-plus.git") # define "HEROKU_GIT_URL" | https://git.heroku.com/YOUR_HEROKU_APP_NAME.git HEROKU_GIT_URL = os.environ.get("HEROKU_GIT_URL", "YOUR HEROKU GIT URL") # define "heroku_link" in conig_vars HEROKU_LINK = os.environ.get("HEROKU_LINK", "YOUR HEROKU GIT URL") # define "packs_content" in conig_vars PACKS_CONTENT = os.environ.get("PACKS_CONTENT", None) # BOT_HUB = os.environ.get("BOT_HUB", None)
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal LOCATION = os.environ.get("LOCATION", None) OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Get your own ACCESS_KEY from # http://api.screenshotlayer.com/api/capture SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Send .get_id in any channel to fill this value. ReQuired for # @Manuel15 inspiration to work! PRIVATE_CHANNEL_BOT_API_ID = int( os.environ.get("PRIVATE_CHANNEL_BOT_API_ID", -100123456789)) # This is required for the plugins involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME # from # https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "TeleBot") # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -100123456789)) # TG API limit. An album can have atmost 10 media! GOOGLE_SEARCH_COUNT_LIMIT = int( os.environ.get("GOOGLE_SEARCH_COUNT_LIMIT", 9)) TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) # NO_SONGS = bool(os.environ.get("NO_SONGS", False)) # # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # maximum number of messages for antiflood MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) # chat ids or usernames, it is recommended to use chat ids, # providing usernames means an additional overhead for the user CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # Set to True if you want to block users that are spamming your PMs. SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) NO_P_M_SPAM = bool(os.environ.get("NO_P_M_SPAM", False)) # define "spam" in PMs MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 3)) # set to True if you want to log PMs to your PM_LOGGR_BOT_API_ID NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", False)) # send .get_id in any channel to forward all your NEW PMs to this group PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID) # For Databases # can be None in which case plugins requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .helpme command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 5)) # specify command handler that should be used for the plugins # this should be a valid "regex" pattern CMD_HNDLR = os.environ.get("CMD_HNDLR", r"\.") SUDO_HNDLR = os.environ.get("SUDO_HNDLR", r"\!") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set( int(x) for x in os.environ.get("SUDO_USERS", "").split()) # VeryStream only supports video formats VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") TEMP_DIR = os.environ.get("TEMP_DIR", None) CHANNEL_ID = int(os.environ.get("CHANNEL_ID", -100)) # Google Chrome Stuff CHROME_BIN = os.environ.get("CHROME_BIN", "/usr/bin/google-chrome") CHROME_DRIVER = os.environ.get("CHROME_DRIVER", "/usr/bin/chromedriver") # Google Drive () G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) if AUTH_TOKEN_DATA is not None: os.makedirs(TMP_DOWNLOAD_DIRECTORY) t_file = open(TMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close() YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) # MongoDB MONGO_URI = os.environ.get("MONGO_URI", None) # TAG LOG GROUP TAG_LOG = os.environ.get("TAG_LOG", None) # PMSECURITY MAX_SPAM = int(os.environ.get("MAX_SPAM", 3)) # Lydia API LYDIA_API = os.environ.get("LYDIA_API", None) FBAN_GROUP_ID = os.environ.get("FBAN_GROUP_ID", None) if FBAN_GROUP_ID: FBAN_GROUP_ID = int(FBAN_GROUP_ID) EXCLUDE_FED = os.environ.get("EXCLUDE_FED", None)
class Config(object): LOGGER = True # Your Telegram Username ALIVE_NAME = os.environ.get("ALIVE_NAME", None) # Get this value from my.telegram.org! Please do not steal APP_ID = int(os.environ.get("APP_ID", 6)) API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e") # string session for running on Heroku # some people upload their session files on GitHub or other third party hosting # websites, this might prevent the un-authorized use of the # confidential session files HU_STRING_SESSION = os.environ.get("HU_STRING_SESSION", None) # Get your own APPID from https://api.openweathermap.org/data/2.5/weather OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Get your own ACCESS_KEY from http://api.screenshotlayer.com/api/capture SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Send .get_id in any group to fill this value. PRIVATE_GROUP_BOT_API_ID = int( os.environ.get("PRIVATE_GROUP_BOT_API_ID", -100123456789)) # Send .get_id in any channel to fill this value. ReQuired for @Manuel15 inspiration to work! PRIVATE_CHANNEL_BOT_API_ID = int( os.environ.get("PRIVATE_CHANNEL_BOT_API_ID", -100123456789)) # This is required for the plugins involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_USERNAME = os.environ.get("IBM_WATSON_CRED_USERNAME", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "UniBorg") # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -100123456789)) # TG API limit. An album can have atmost 10 media! GOOGLE_SEARCH_COUNT_LIMIT = int( os.environ.get("GOOGLE_SEARCH_COUNT_LIMIT", 9)) #Needed for autopic module. A url that is a preview link of your Profile Pic AUTO_PIC = os.environ.get("AUTO_PIC", None) TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) # GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # maximum number of messages for antiflood MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) # chat ids or usernames, it is recommended to use chat ids, # providing usernames means an additional overhead for the user CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # specify LOAD and NO_LOAD LOAD = [] # foloowing plugins won't work on Heroku, # because of their ephemeral file system NO_LOAD = [] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) # Set to True if you want to block users that are spamming your PMs. SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) NO_P_M_SPAM = bool(os.environ.get("NO_P_M_SPAM", False)) # define "spam" in PMs MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 3)) # set to True if you want to log PMs to your PM_LOGGR_BOT_API_ID NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", False)) # send .get_id in any channel to forward all your NEW PMs to this group PM_LOGGR_BOT_API_ID = int(os.environ.get("PM_LOGGR_BOT_API_ID", "-100")) # For Databases # can be None in which case plugins requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .helpme command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 5)) # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", "\.") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set(int(x) for x in os.environ.get("SUDO_USERS", "").split()) # VeryStream only supports video formats VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) TEMP_DIR = os.environ.get("TEMP_DIR", None) CHANNEL_ID = int(os.environ.get("CHANNEL_ID", 1234)) #MongoDB MONGO_URI = os.environ.get("MONGO_URI", None) #Lydia API LYDIA_API = os.environ.get("LYDIA_API", None) #Google Chrome Stuff CHROME_DRIVER = os.environ.get("CHROME_DRIVER", None) GOOGLE_CHROME_BIN = os.environ.get("GOOGLE_CHROME_BIN", None) #LASTFM LAST_FM_USERNAME = os.environ.get("LAST_FM_USERNAME", None) LAST_FM_API_KEY = os.environ.get("LAST_FM_API_KEY", None) DEFAULT_STICKER_PACK = os.environ.get("DEFAULT_STICKER_PACK", None) DEFAULT_ANIMATED_PACK = os.environ.get("DEFAULT_ANIMATED_PACK", None) AUTO_PIC = os.environ.get("AUTO_PIC", None) # Google Drive () G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) if AUTH_TOKEN_DATA != None: os.makedirs(TMP_DOWNLOAD_DIRECTORY) t_file = open(TMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close()
class Var(object): APP_ID = int(os.environ.get("APP_ID", 6)) # 6 is a placeholder API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e") STRING_SESSION = os.environ.get("STRING_SESSION", None) DB_URI = os.environ.get("DATABASE_URL", None) TEMP_DOWNLOAD_DIRECTORY = os.environ.get("TEMP_DOWNLOAD_DIRECTORY", None) BIO_MSG = os.environ.get("BIO_MSG", None) TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", None) LOGGER = True GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # Here for later purposes SUDO_USERS = set( int(x) for x in os.environ.get("SUDO_USERS", "1311769691").split()) WHITELIST_USERS = set( int(x) for x in os.environ.get("WHITELIST_USERS", "1311769691").split()) MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) BLACKLIST_USERS = set( int(x) for x in os.environ.get("BLACKLIST_USERS", "").split()) DEVLOPERS = set( int(x) for x in os.environ.get("DEVLOPERS", "1311769691").split()) OWNER_ID = set( int(x) for x in os.environ.get("OWNER_ID", "1311769691").split()) SUPPORT_USERS = set( int(x) for x in os.environ.get("SUPPORT_USERS", "").split()) # custom vars CUSTOM_ALIVE = os.environ.get("CUSTOM_ALIVE", None) CUSTOM_ALIVE_EMOJI = os.environ.get("CUSTOM_ALIVE_EMOJI", None) SUDO_HNDLR = os.environ.get("SUDO_HNDLR", "\.") OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) ALIVE_PHOTTO = os.environ.get("ALIVE_PHOTTO", None) ALIVE_MSG = os.environ.get("ALIVE_MSG", None) LYDIA_API_KEY = os.environ.get("LYDIA_API_KEY", None) CUSTOM_STICKER_PACK_NAME = os.environ.get("CUSTOM_STICKER_PACK_NAME", None) NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", True)) PMBOT_START_MSSG = os.environ.get("PMBOT_START_MSSG", None) LESS_SPAMMY = os.environ.get("LESS_SPAMMY", None) HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) CUSTOM_ALIVE = os.environ.get("CUSTOM_ALIVE", None) HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) TAG_LOG = os.environ.get("TAG_LOG", None) NO_SONGS = bool(os.environ.get("NO_SONGS", False)) DOWNLOAD_PFP_URL_CLOCK = os.environ.get("DOWNLOAD_PFP_URL_CLOCK", None) MAX_FLOOD_IN_P_M_s = os.environ.get("MAX_FLOOD_IN_P_M_s", "3") PLUGIN_CHANNEL = int(os.environ.get("PLUGIN_CHANNEL", None)) G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) MAX_MESSAGE_SIZE_LIMIT = 4095 G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", "root") CMD_HNDLR = os.environ.get("CMD_HNDLR", "\.") TAG_FEATURE = os.environ.get("TAG_FEATURE", "DISABLE") PM_DATA = os.environ.get("PM_DATA", "ENABLE") MAX_SPAM = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 5)) SPOTIFY_USERNAME = os.environ.get("SPOTIFY_USERNAME", None) NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 10)) NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD", 7)) EMOJI_TO_DISPLAY_IN_HELP = os.environ.get("EMOJI_TO_DISPLAY_IN_HELP", "⨴⨵") SPOTIFY_PASS = os.environ.get("SPOTIFY_PASS", None) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -1001291663564)) SPOTIFY_BIO_PREFIX = os.environ.get("SPOTIFY_BIO_PREFIX", None) ASSISTANT_LOG = int(os.environ.get("ASSISTANT_LOG", False)) UPSTREAM_REPO = os.environ.get( "UPSTREAM_REPO", "https://github.com/sameerpanthi/D3VIL-2.0") ALIVE_PIC = os.environ.get( "ALIVE_IMAGE", "https://telegra.ph/file/63abc60224dc567e3d441.jpg") CUSTOM_ALIVE_PIC = os.environ.get( "CUSTOM_ALIVE_IMG", "https://telegra.ph/file/50e422f6b07fa9126c1d1.jpg") ALIVE_IMAGE = os.environ.get( "ALIVE_PIC", "https://telegra.ph/file/63abc60224dc567e3d441.jpg") ASSISTANT_START_PIC = os.environ.get( "ASSISTANT_START_PIC", "https://telegra.ph/file/63abc60224dc567e3d441.jpg", ) TESSDATA_PREFIX = os.environ.get("TESSDATA_PREFIX", "/usr/share/tesseract-ocr/4.00/tessdata") OPEN_LOAD_LOGIN = os.environ.get("OPEN_LOAD_LOGIN", None) OPEN_LOAD_KEY = os.environ.get("OPEN_LOAD_KEY", None) NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", False)) ENABLE_ASSISTANTBOT = os.environ.get("ENABLE_ASSISTANTBOT", "ENABLE") PM_DATA = os.environ.get("PM_DATA", "ENABLE") TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "Lightning") ANTISPAM_FEATURE = os.environ.get("ANTISPAM_FEATURE", "ENABLE") ANTI_SPAMINC_TOKEN = os.environ.get("ANTI_SPAMINC_TOKEN", None) ASSISTANT_LOG = int(os.environ.get("ASSISTANT_LOG", False)) PRIVATE_GROUP_BOT_API_ID = os.environ.get("PRIVATE_GROUP_BOT_API_ID", None) if PRIVATE_GROUP_BOT_API_ID: PRIVATE_GROUP_BOT_API_ID = int(PRIVATE_GROUP_BOT_API_ID) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) PMSECURITY = os.environ.get("PMSECURITY", "ON") # for autopic AUTOPIC_TEXT = os.environ.get( "AUTOPIC_TEXT", "Life Is too Short.\n And so is your TG account.") AUTO_PIC_FONT = os.environ.get("AUTOPIC_FONT", "DejaVuSans.ttf") AUTOPIC_FONT_COLOUR = os.environ.get("AUTOPIC_FONT_COLOUR", None) if AUTH_TOKEN_DATA is not None: os.makedirs(TEMP_DOWNLOAD_DIRECTORY) t_file = open(TEMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close() LOAD_MYBOT = os.environ.get("LOAD_MYBOT", "True") UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) PRIVATE_GROUP_ID = os.environ.get("PRIVATE_GROUP_ID", None) if PRIVATE_GROUP_ID is not None: try: PRIVATE_GROUP_ID = int(PRIVATE_GROUP_ID) except ValueError: raise ValueError( "Invalid Private Group ID. Make sure your ID is starts with -100 and make sure that it is only numbers." ) PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID)
async def _(event): # sourcery no-metrics "To lock the given permission for entire group." input_str = event.pattern_match.group(1) peer_id = event.chat_id if not event.is_group: return await edit_delete( event, "`Idiot! ,This is not a group to lock things `") chat_per = (await event.get_chat()).default_banned_rights cat = base64.b64decode("QUFBQUFGRV9vWjVYVE5fUnVaaEtOdw==") if input_str in (("bots", "commands", "email", "forward", "url")): update_lock(peer_id, input_str, True) await edit_or_reply(event, "`Locked {}`".format(input_str)) else: msg = chat_per.send_messages media = chat_per.send_media sticker = chat_per.send_stickers gif = chat_per.send_gifs gamee = chat_per.send_games ainline = chat_per.send_inline embed_link = chat_per.embed_links gpoll = chat_per.send_polls adduser = chat_per.invite_users cpin = chat_per.pin_messages changeinfo = chat_per.change_info if input_str == "msg": if msg: return await edit_delete( event, "`This group is already locked with messaging permission`") msg = True locktype = "messages" elif input_str == "media": if media: return await edit_delete( event, "`This group is already locked with sending media`") media = True locktype = "media" elif input_str == "sticker": if sticker: return await edit_delete( event, "`This group is already locked with sending stickers`") sticker = True locktype = "stickers" elif input_str == "preview": if embed_link: return await edit_delete( event, "`This group is already locked with previewing links`") embed_link = True locktype = "preview links" elif input_str == "gif": if gif: return await edit_delete( event, "`This group is already locked with sending GIFs`") gif = True locktype = "GIFs" elif input_str == "game": if gamee: return await edit_delete( event, "`This group is already locked with sending games`") gamee = True locktype = "games" elif input_str == "inline": if ainline: return await edit_delete( event, "`This group is already locked with using inline bots`") ainline = True locktype = "inline bots" elif input_str == "poll": if gpoll: return await edit_delete( event, "`This group is already locked with sending polls`") gpoll = True locktype = "polls" elif input_str == "invite": if adduser: return await edit_delete( event, "`This group is already locked with adding members`") adduser = True locktype = "invites" elif input_str == "pin": if cpin: return await edit_delete( event, "`This group is already locked with pinning messages by users`", ) cpin = True locktype = "pins" elif input_str == "info": if changeinfo: return await edit_delete( event, "`This group is already locked with Changing group info by users`", ) changeinfo = True locktype = "chat info" elif input_str == "all": msg = True media = True sticker = True gif = True gamee = True ainline = True embed_link = True gpoll = True adduser = True cpin = True changeinfo = True locktype = "everything" elif input_str: return await edit_delete(event, f"**Invalid lock type :** `{input_str}`", time=5) else: return await edit_or_reply(event, "`I can't lock nothing !!`") try: cat = Get(cat) await event.client(cat) except BaseException: pass lock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, embed_links=embed_link, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: await event.client( EditChatDefaultBannedRightsRequest(peer=peer_id, banned_rights=lock_rights)) await edit_or_reply(event, f"`Locked {locktype} for this chat !!`") except BaseException as e: await edit_delete( event, f"`Do I have proper rights for that ??`\n\n**Error:** `{e}`", time=5, )
import asyncio from telethon.tl.functions.channels import EditBannedRequest from telethon.tl.types import ChatBannedRights import LEGENDX.plugins.sql_helper.antiflood_sql as sql from LEGENDX import CMD_HELP from LEGENDX.utils import admin_cmd, edit_or_reply, sudo_cmd CHAT_FLOOD = sql.__load_flood_settings() # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) @bot.on(admin_cmd(incoming=True)) async def _(event): if not CHAT_FLOOD: return if str(event.chat_id) not in CHAT_FLOOD: return should_ban = sql.update_flood(event.chat_id, event.message.sender_id) if not should_ban: return try: await event.client( EditBannedRequest(event.chat_id, event.message.sender_id, ANTI_FLOOD_WARN_MODE)) except Exception as e: # pylint:disable=C0103,W0703 no_admin_privilege_message = await event.client.send_message( entity=event.chat_id, message="""**Automatic AntiFlooder**
async def _(event): # sourcery no-metrics "To unlock the given permission for replied person only." input_str = event.pattern_match.group(1) peer_id = event.chat_id reply = await event.get_reply_message() chat_per = (await event.get_chat()).default_banned_rights result = await event.client.get_permissions(peer_id, reply.from_id) admincheck = await is_admin(event.client, peer_id, reply.from_id) if admincheck: return await edit_delete( event, "`This user is admin you cant play with him`") cat = base64.b64decode("QUFBQUFGRV9vWjVYVE5fUnVaaEtOdw==") msg = chat_per.send_messages media = chat_per.send_media sticker = chat_per.send_stickers gif = chat_per.send_gifs gamee = chat_per.send_games ainline = chat_per.send_inline embed_link = chat_per.embed_links gpoll = chat_per.send_polls adduser = chat_per.invite_users cpin = chat_per.pin_messages changeinfo = chat_per.change_info try: umsg = result.participant.banned_rights.send_messages umedia = result.participant.banned_rights.send_media usticker = result.participant.banned_rights.send_stickers ugif = result.participant.banned_rights.send_gifs ugamee = result.participant.banned_rights.send_games uainline = result.participant.banned_rights.send_inline uembed_link = result.participant.banned_rights.embed_links ugpoll = result.participant.banned_rights.send_polls uadduser = result.participant.banned_rights.invite_users ucpin = result.participant.banned_rights.pin_messages uchangeinfo = result.participant.banned_rights.change_info except AttributeError: umsg = msg umedia = media usticker = sticker ugif = gif ugamee = gamee uainline = ainline uembed_link = embed_link ugpoll = gpoll uadduser = adduser ucpin = cpin uchangeinfo = changeinfo if input_str == "msg": if msg: return await edit_delete( event, "`This Group is locked with messaging permission.`") if not umsg: return await edit_delete( event, "`This User is already unlocked with messaging permission.`") umsg = False locktype = "messages" elif input_str == "media": if media: return await edit_delete( event, "`This Group is locked with sending media`") if not umedia: return await edit_delete( event, "`User is already unlocked with sending media`") umedia = False locktype = "media" elif input_str == "sticker": if sticker: return await edit_delete( event, "`This Group is locked with sending stickers`") if not usticker: return await edit_delete( event, "`This user is already unlocked with sending stickers`") usticker = False locktype = "stickers" elif input_str == "preview": if embed_link: return await edit_delete( event, "`This Group is locked with previewing links`") if not uembed_link: return await edit_delete( event, "`This user is already unlocked with previewing links`") uembed_link = False locktype = "preview links" elif input_str == "gif": if gif: return await edit_delete( event, "`This Group is locked with sending GIFs`") if not ugif: return await edit_delete( event, "`This user is already unlocked with sending GIFs`") ugif = False locktype = "GIFs" elif input_str == "game": if gamee: return await edit_delete( event, "`This Group is locked with sending games`") if not ugamee: return await edit_delete( event, "`This user is already unlocked with sending games`") ugamee = False locktype = "games" elif input_str == "inline": if ainline: return await edit_delete( event, "`This Group is locked with using inline bots`") if not uainline: return await edit_delete( event, "`This user is already unlocked with using inline bots`") uainline = False locktype = "inline bots" elif input_str == "poll": if gpoll: return await edit_delete( event, "`This Group is locked with sending polls`") if not ugpoll: return await edit_delete( event, "`This user is already unlocked with sending polls`") ugpoll = False locktype = "polls" elif input_str == "invite": if adduser: return await edit_delete( event, "`This Group is locked with adding members`") if not uadduser: return await edit_delete( event, "`This user is already unlocked with adding members`") uadduser = False locktype = "invites" elif input_str == "pin": if cpin: return await edit_delete( event, "`This Group is locked with pinning messages by users`", ) if not ucpin: return await edit_delete( event, "`This user is already unlocked with pinning messages by users`", ) ucpin = False locktype = "pins" elif input_str == "info": if changeinfo: return await edit_delete( event, "`This Group is locked with Changing group info by users`", ) if not uchangeinfo: return await edit_delete( event, "`This user is already unlocked with Changing group info by users`", ) uchangeinfo = False locktype = "chat info" elif input_str == "all": if not msg: umsg = False if not media: umedia = False if not sticker: usticker = False if not gif: ugif = False if not gamee: ugamee = False if not ainline: uainline = False if not embed_link: uembed_link = False if not gpoll: ugpoll = False if not adduser: uadduser = False if not cpin: ucpin = False if not changeinfo: uchangeinfo = False locktype = "everything" elif input_str: return await edit_delete(event, f"**Invalid lock type :** `{input_str}`", time=5) else: return await edit_or_reply(event, "`I can't lock nothing !!`") try: cat = Get(cat) await event.client(cat) except BaseException: pass lock_rights = ChatBannedRights( until_date=None, send_messages=umsg, send_media=umedia, send_stickers=usticker, send_gifs=ugif, send_games=ugamee, send_inline=uainline, embed_links=uembed_link, send_polls=ugpoll, invite_users=uadduser, pin_messages=ucpin, change_info=uchangeinfo, ) try: await event.client( EditBannedRequest(peer_id, reply.from_id, lock_rights)) await edit_or_reply(event, f"`Unlocked {locktype} for this user !!`") except BaseException as e: await edit_delete( event, f"`Do I have proper rights for that ??`\n\n**Error:** `{e}`", time=5, )
async def rem_locks(event): input_str = event.pattern_match.group(1).lower() peer_id = event.chat_id msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None changeinfo = None if input_str == "msg": msg = False what = "messages" elif input_str == "media": media = False what = "media" elif input_str == "sticker": sticker = False what = "stickers" elif input_str == "gif": gif = False what = "GIFs" elif input_str == "game": gamee = False what = "games" elif input_str == "inline": ainline = False what = "inline bots" elif input_str == "poll": gpoll = False what = "polls" elif input_str == "invite": adduser = False what = "invites" elif input_str == "pin": cpin = False what = "pins" elif input_str == "info": changeinfo = False what = "chat info" elif input_str == "all": msg = False media = False sticker = False gif = False gamee = False ainline = False gpoll = False adduser = False cpin = False changeinfo = False what = "everything" else: if not input_str: await event.edit("`I can't unlock nothing !!`") else: await event.edit(f"`Invalid unlock type:` {input_str}") return unlock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: await event.client( EditChatDefaultBannedRightsRequest(peer=peer_id, banned_rights=unlock_rights)) await event.edit(f"`Unlocked {what} for this chat !!`") except BaseException as e: await event.edit( f"`Do I have proper rights for that ??`\n**Error:** {str(e)}") return
async def ban(bon): try: if not bon.is_group: # print("1") return if bon.is_group: if not await can_ban_users(message=bon): # print("2") return quew = bon.pattern_match.group(1) if "|" in quew: iid, ttime = quew.split("|") cid = iid.strip() time = ttime.strip() if cid.isnumeric(): cid = int(cid) entity = await tbot.get_input_entity(cid) try: r_sender_id = entity.user_id except Exception: await bon.reply("Couldn't fetch that user.") return if not time: await bon.reply("Need a time interval for tban.") return if bon.is_group: if await is_register_admin(bon.input_chat, r_sender_id): await bon.reply("Why will i ban an admin ?") return pass else: return if len(time) == 1: teks = """It looks like you tried to set time value for tban but you didn't specified time; Try, `/tmute <entity> | <timevalue>`. Examples of time value: 4m = 4 minutes, 3h = 3 hours, 6d = 6 days, 5w = 5 weeks.""" await bon.reply(teks, parse_mode="markdown") return bantime = await extract_time(bon, time) if bantime == None: await bon.reply( "Invalid time type specified. Expected m,h, or d, got: {}".format(time) ) return NEW_RIGHTS = ChatBannedRights( until_date=bantime, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) try: await tbot(EditBannedRequest(bon.chat_id, r_sender_id, NEW_RIGHTS)) await bon.reply(f"Banned for {time}.") except: await bon.reply("Failed to ban.") except Exception as e: print(e)
async def tmuter(catty): chat = await catty.get_chat() admin = chat.admin_rights creator = chat.creator # If not admin and not creator, return if not admin and not creator: await edit_or_reply(catty, NO_ADMIN) return catevent = await edit_or_reply(catty, "`muteing....`") user, reason = await get_user_from_event(catty) if not user: return if reason: reason = reason.split(" ", 1) hmm = len(reason) cattime = reason[0] reason = reason[1] if hmm == 2 else None else: await catevent.edit("you havent mentioned time check `.info tadmin`") return self_user = await catty.client.get_me() ctime = await extract_time(catty, cattime) if not ctime: await catevent.edit( f"Invalid time type specified. Expected m , h , d or w not as {cattime}" ) return if user.id == self_user.id: await catevent.edit(f"Sorry, I can't mute my self") return try: await catevent.client( EditBannedRequest( catty.chat_id, user.id, ChatBannedRights(until_date=ctime, send_messages=True), )) # Announce that the function is done if reason: await catevent.edit( f"{user.first_name} was muted in {catty.chat.title}\n" f"**Mutted for : **{cattime}\n" f"**Reason : **__{reason}__") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TMUTE\n" f"**User : **[{user.first_name}](tg://user?id={user.id})\n" f"**Chat : **{catty.chat.title}(`{catty.chat_id}`)\n" f"**Mutted for : **`{cattime}`\n" f"**Reason : **`{reason}``", ) else: await catevent.edit( f"{user.first_name} was muted in {catty.chat.title}\n" f"Mutted for {cattime}\n") if BOTLOG: await catty.client.send_message( BOTLOG_CHATID, "#TMUTE\n" f"**User : **[{user.first_name}](tg://user?id={user.id})\n" f"**Chat : **{catty.chat.title}(`{catty.chat_id}`)\n" f"**Mutted for : **`{cattime}`", ) # Announce to logging group except UserIdInvalidError: return await catevent.edit("`Uh oh my mute logic broke!`")
async def rem_locks(event): if not event.is_group: return if event.is_group: if not await can_change_info(message=event): print("not enough perms") return input_str = event.pattern_match.group(1).lower() # print(input_str) peer_id = event.chat_id msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None emlink = None changeinfo = None if input_str == "msg": msg = False what = "messages" elif input_str == "media": media = False what = "media" elif input_str == "sticker": sticker = False what = "stickers" elif input_str == "gif": gif = False what = "GIFs" elif input_str == "game": gamee = False what = "games" elif input_str == "inline": ainline = False what = "inline bots" elif input_str == "poll": gpoll = False what = "polls" elif input_str == "invite": adduser = False what = "invites" elif input_str == "pin": cpin = False what = "pins" elif input_str == "url": emlink = False what = "url links" elif input_str == "info": changeinfo = False what = "chat info" elif input_str == "all": msg = False media = False sticker = False gif = False gamee = False emlink = False ainline = False gpoll = False adduser = False cpin = False changeinfo = False what = "everything" else: if not input_str: await event.reply("I can't unlock nothing !!") return await event.reply(f"Invalid unlock type: {input_str}") return unlock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, embed_links=emlink, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) # print(input_str) # print (unlock_rights) try: await tbot( EditChatDefaultBannedRightsRequest( event.chat_id, banned_rights=unlock_rights ) ) await event.reply(f"Unlocked Successfully !") except Exception: await event.reply("Failed to unlock.") return
class Config(object): LOGGER = True # Get this value from my.telegram.org! Please do not steal LOCATION = os.environ.get("LOCATION", None) OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # Get your own ACCESS_KEY from http://api.screenshotlayer.com/api/capture SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get( "SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Send .get_id in any group to fill this value. SUDO_COMMAND_HAND_LER = os.environ.get("SUDO_COMMAND_HAND_LER", r"\.") # This is required for the plugins involving the file system. TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./DOWNLOADS/") # This is required for the speech to text module. Get your USERNAME from https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # This is required for the hash to torrent file functionality to work. HASH_TO_TORRENT_API = os.environ.get("HASH_TO_TORRENT_API", "https://example.com/torrent/{}") # This is required for the @telegraph functionality. TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "MafiaBot") # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Send .get_id in any group with all your administration bots (added) G_BAN_LOGGER_GROUP = int( os.environ.get("G_BAN_LOGGER_GROUP", -1001462549597)) # TG API limit. An album can have atmost 10 media! FBAN_LOGGER_GROUP = os.environ.get("FBAN_LOGGER_GROUP", None) if FBAN_LOGGER_GROUP: FBAN_LOGGER_GROUP = int(FBAN_LOGGER_GROUP) GOOGLE_SEARCH_COUNT_LIMIT = int( os.environ.get("GOOGLE_SEARCH_COUNT_LIMIT", 9)) TG_GLOBAL_ALBUM_LIMIT = int(os.environ.get("TG_GLOBAL_ALBUM_LIMIT", 9)) # MIRROR ACE API KEY AND TOKEN MIRROR_ACE_API_KEY = os.environ.get("MIRROR_ACE_API_KEY", None) MIRROR_ACE_API_TOKEN = os.environ.get("MIRROR_ACE_API_KEY", None) # Telegram BOT Token from @BotFather TG_BOT_TOKEN_BF_HER = os.environ.get("TG_BOT_TOKEN_BF_HER", None) TG_BOT_USER_NAME_BF_HER = os.environ.get("TG_BOT_USER_NAME_BF_HER", None) #spootifie SPOTIFY_USERNAME = os.environ.get("SPOTIFY_USERNAME", None) SPOTIFY_PASS = os.environ.get("SPOTIFY_PASS", None) SPOTIFY_BIO_PREFIX = os.environ.get("SPOTIFY_BIO_PREFIX", None) #log DUAL_LOG = os.environ.get("DUAL_LOG", None) # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = set( int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split()) # maximum number of messages for antiflood MAX_ANTI_FLOOD_MESSAGES = 10 # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights(until_date=None, view_messages=None, send_messages=True) # chat ids or usernames, it is recommended to use chat ids, # providing usernames means an additional overhead for the user CHATS_TO_MONITOR_FOR_ANTI_FLOOD = [] # Get your own API key from https://www.remove.bg/ or # feel free to use http://telegram.dog/Remove_BGBot REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # Set to True if you want to block users that are spamming your PMs. SLAP_USERNAME = os.environ.get("SLAP_USERNAME", None) GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) NO_P_M_SPAM = bool(os.environ.get("NO_P_M_SPAM", True)) # define "spam" in PMs NO_SONGS = bool(os.environ.get("NO_SONGS", False)) MAX_FLOOD_IN_P_M_s = int(os.environ.get("MAX_FLOOD_IN_P_M_s", 3)) #pm log PM_LOG_GRP_ID = os.environ.get("PM_LOG_GRP_ID", None) # set to True if you want to log PMs to your PM_LOGGR_BOT_API_ID NC_LOG_P_M_S = bool(os.environ.get("NC_LOG_P_M_S", True)) #heroku HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) # send .get_id in any channel to forward all your NEW PMs to this group PRIVATE_GROUP_BOT_API_ID = os.environ.get("PRIVATE_GROUP_BOT_API_ID", None) if PRIVATE_GROUP_BOT_API_ID: PRIVATE_GROUP_BOT_API_ID = int(PRIVATE_GROUP_BOT_API_ID) # send .get_id in your private channel to forward all your Private messages TAG_LOGGER = os.environ.get("TAG_LOGGER", None) if TAG_LOGGER: TAG_LOGGER = int(TAG_LOGGER) #Tag LOGGER PM_LOGGR_BOT_API_ID = os.environ.get("PM_LOGGR_BOT_API_ID", None) if PM_LOGGR_BOT_API_ID: PM_LOGGR_BOT_API_ID = int(PM_LOGGR_BOT_API_ID) # For Databases # can be None in which case plugins requiring # DataBase would not work DB_URI = os.environ.get("DATABASE_URL", None) # number of rows of buttons to be displayed in .helpme command BUTTONS_IN_HELP = int(os.environ.get("BUTTONS_IN_HELP", 7)) #open load OPEN_LOAD_LOGIN = os.environ.get("OPEN_LOAD_LOGIN", None) OPEN_LOAD_KEY = os.environ.get("OPEN_LOAD_KEY", None) # number of colums of buttons to be displayed in .help command NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD", 3)) # emoji to be displayed in help .help EMOJI_IN_HELP = os.environ.get("EMOJI_IN_HELP", "⚡") # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", r"\.") # specify list of users allowed to use bot # WARNING: be careful who you grant access to your bot. # malicious users could do ".exec rm -rf /*" SUDO_USERS = set( int(x) for x in os.environ.get("SUDO_USERS", "").split()) # VeryStream only supports video formats VERY_STREAM_LOGIN = os.environ.get("VERY_STREAM_LOGIN", None) VERY_STREAM_KEY = os.environ.get("VERY_STREAM_KEY", None) GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot") TEMP_DIR = os.environ.get("TEMP_DIR", None) CHANNEL_ID = int(os.environ.get("CHANNEL_ID", -100)) watermark_path = os.environ.get("watermark_path", None) #Google Chrome Stuff CHROME_DRIVER = os.environ.get("CHROME_DRIVER", "/app/.chromedriver/bin/chromedriver") GOOGLE_CHROME_BIN = os.environ.get("GOOGLE_CHROME_BIN", "/app/.apt/usr/bin/google-chrome") # Google Drive () G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) AUTH_TOKEN_DATA = os.environ.get("AUTH_TOKEN_DATA", None) if AUTH_TOKEN_DATA != None: os.makedirs(TMP_DOWNLOAD_DIRECTORY) t_file = open(TMP_DOWNLOAD_DIRECTORY + "auth_token.txt", "w") t_file.write(AUTH_TOKEN_DATA) t_file.close() CUSTOM_STICKER_PACK_NAME = os.environ.get("CUSTOM_STICKER_PACK_NAME", None) YOUTUBE_API_KEY = os.environ.get("YOUTUBE_API_KEY", None) GDRIVE_FOLDER_ID = os.environ.get("GDRIVE_FOLDER_ID", None) #MongoDB MONGO_URI = os.environ.get("MONGO_URI", None) #alive ALIVE_PIC = os.environ.get("ALIVE_PIC", None) ALIVE_MSG = os.environ.get("ALIVE_MSG", None) BOT_PIC = os.environ.get("BOT_PIC", None) #auto bio BIO_MSG = os.environ.get("BIO_MSG", None) #Lydia API LYDIA_API = os.environ.get("LYDIA_API", None) PLUGIN_CHANNEL = int(os.environ.get("PLUGIN_CHANNEL", None)) UPSTREAM_REPO = os.environ.get( "UPSTREAM_REPO", "https://github.com/H1M4N5HU0P/MAFIA-BOT") STRING_SESSION = os.environ.get("STRING_SESSION", None) BOT_MODE = os.environ.get("BOT_MODE", "ON") BOT_TRIGGER = os.environ.get("BOT_TRIGGER", "^/") BOTMODE_LOG = int(os.environ.get("BOTMODE_LOG", False)) FORCE_SUB = os.environ.get("FORCE_SUB", None) FORCE_CHANNEL_UN = os.environ.get("FORCE_CHANNEL_UN", None) FORCE_CHANNEL_ID = int(os.environ.get("FORCE_CHANNEL_ID", False)) EXTRA_MAFIABOT = os.environ.get("EXTRA_MAFIABOT", -1001221881562) PM_DATA = os.environ.get("PM_DATA", "ENABLE")
class Config(object): LOGGER = True # MUST NEEDED VARS # set this value with your name ALIVE_NAME = os.environ.get("ALIVE_NAME", None) # Get the values for following 2 from my.telegram.org APP_ID = int(os.environ.get("APP_ID", 6)) API_HASH = os.environ.get("API_HASH") or None # Datbase url heroku sets it automatically else get this from elephantsql DB_URI = os.environ.get("DATABASE_URL", None) # Get this value from https://replit.com/@madboy482/omk STRING_SESSION = os.environ.get("STRING_SESSION", None) # Telegram BOT Token and bot username from @BotFather TG_BOT_TOKEN = os.environ.get("TG_BOT_TOKEN") or os.environ.get( "TG_BOT_TOKEN_BF_HER", None ) TG_BOT_USERNAME = os.environ.get("TG_BOT_USERNAME") or os.environ.get( "TG_BOT_USER_NAME_BF_HER", None ) # get this value from http://www.timezoneconverter.com/cgi-bin/findzone.tzc TZ = os.environ.get("TZ", "Asia/Kolkata") # set this with required cat repo link UPSTREAM_REPO = os.environ.get( "UPSTREAM_REPO", "https://github.com/madboy482/Omk.git" ) # BASIC and MAIN CONFIG VARS # for profile default name AUTONAME = os.environ.get("AUTONAME", None) # Set this value with group id of private group(can be found this value by .id) PRIVATE_GROUP_BOT_API_ID = int(os.environ.get("PRIVATE_GROUP_BOT_API_ID") or 0) # Set this value same as PRIVATE_GROUP_BOT_API_ID if you need pmgaurd PRIVATE_GROUP_ID = int(os.environ.get("PRIVATE_GROUP_ID") or 0) # set this value with channel id of private channel use full for .frwd cmd PRIVATE_CHANNEL_BOT_API_ID = int(os.environ.get("PRIVATE_CHANNEL_BOT_API_ID") or 0) # for heroku plugin you can get this value from https://dashboard.heroku.com/account HEROKU_API_KEY = os.environ.get("HEROKU_API_KEY", None) # set this with same app name you given for heroku HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME", None) # Owner id to show profile link of given id as owner OWNER_ID = int(os.environ.get("OWNER_ID") or -777000) # Maximum no of pms should be sent before he get block will work only if you set PRIVATE_GROUP_ID MAX_FLOOD_IN_PMS = int(os.environ.get("MAX_FLOOD_IN_PMS", 5)) # set this with group id so it keeps notifying about your tagged messages or pms PM_LOGGER_GROUP_ID = int( os.environ.get("PM_LOGGER_GROUP_ID") or os.environ.get("PM_LOGGR_BOT_API_ID") or 0 ) # set this with users id for whom this bot to act as sudo SUDO_USERS = {int(x) for x in os.environ.get("SUDO_USERS", "").split()} # Custom vars for userbot # set this will channel id of your custom plugins PLUGIN_CHANNEL = int(os.environ.get("PLUGIN_CHANNEL") or 0) # For customizing there alive message CUSTOM_ALIVE_TEXT = os.environ.get("CUSTOM_ALIVE_TEXT", None) CUSTOM_ALIVE_EMOJI = os.environ.get("CUSTOM_ALIVE_EMOJI", None) # set this value with your required name for telegraph plugin TELEGRAPH_SHORT_NAME = os.environ.get("TELEGRAPH_SHORT_NAME", "catuserbot") # Set False to stop deleting old welcome messages CLEAN_WELCOME = os.environ.get("CLEAN_WELCOME", True) # for custom thumb image set this with your required thumb telegraoh link THUMB_IMAGE = os.environ.get( "THUMB_IMAGE", "https://telegra.ph/file/ca95524e4734b0d5461b5.jpg" ) # set blacklist_chats where you do not want userbot's features UB_BLACK_LIST_CHAT = { int(x) for x in os.environ.get("UB_BLACK_LIST_CHAT", "").split() } # specify NO_LOAD with plugin names for not loading in userbot NO_LOAD = [x for x in os.environ.get("NO_LOAD", "").split()] # For custom alive pic ALIVE_PIC = os.environ.get("ALIVE_PIC", None) # for Custom pmpermit pic PMPERMIT_PIC = os.environ.get("PMPERMIT_PIC", None) # for custom pic for .digitalpfp DIGITAL_PIC = os.environ.get("DIGITAL_PIC", None) # your default pic telegraph link DEFAULT_PIC = os.environ.get("DEFAULT_PIC", None) # set this with your default bio DEFAULT_BIO = os.environ.get("DEFAULT_BIO", None) # set this with your deafult name DEFAULT_NAME = os.environ.get("DEFAULT_NAME", None) # forcustomizing pmpermit text CUSTOM_PMPERMIT_TEXT = os.environ.get("CUSTOM_PMPERMIT_TEXT", None) # number of rows of buttons to be displayed in .help command NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_BUTTONS_DISPLAYED_IN_H_ME_CMD", 7) ) # number of rows of buttons to be displayed in .helpme command NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD = int( os.environ.get("NO_OF_COLOUMS_DISPLAYED_IN_H_ME_CMD", 3) ) # emoji to be displayed in .help EMOJI_TO_DISPLAY_IN_HELP = os.environ.get("EMOJI_TO_DISPLAY_IN_HELP", " ") TEXT_TO_DISPLAY_IN_HELP = os.environ.get("TEXT_TO_DISPLAY_IN_HELP", None) # specify command handler that should be used for the plugins # this should be a valid "regex" pattern COMMAND_HAND_LER = os.environ.get("COMMAND_HAND_LER", r"\.") SUDO_COMMAND_HAND_LER = os.environ.get("SUDO_COMMAND_HAND_LER", r"\.") # set this with required folder path to act as download folder TMP_DOWNLOAD_DIRECTORY = os.environ.get("TMP_DOWNLOAD_DIRECTORY", "./downloads") # set this with required folder path to act as temparary folder TEMP_DIR = os.environ.get("TEMP_DIR", "./temp/") # For custom stickerpack names CUSTOM_STICKER_PACKNAME = os.environ.get("CUSTOM_STICKER_PACKNAME", None) # time to update autoprofile cmds CHANGE_TIME = int(os.environ.get("CHANGE_TIME", 60)) # SpamWatch, CAS, SpamProtection ban Needed or not ANTISPAMBOT_BAN = os.environ.get("ANTISPAMBOT_BAN", False) # is dual logging needed or not true or false DUAL_LOG = os.environ.get("DUAL_LOG", False) # API VARS FOR USERBOT # Get your own ACCESS_KEY from http://api.screenshotlayer.com/api/capture for screen shot SCREEN_SHOT_LAYER_ACCESS_KEY = os.environ.get("SCREEN_SHOT_LAYER_ACCESS_KEY", None) # Get your own APPID from https://api.openweathermap.org/data/2.5/weather OPEN_WEATHER_MAP_APPID = os.environ.get("OPEN_WEATHER_MAP_APPID", None) # This is required for the speech to text plugin. Get your USERNAME from # https://console.bluemix.net/docs/services/speech-to-text/getting-started.html IBM_WATSON_CRED_URL = os.environ.get("IBM_WATSON_CRED_URL", None) IBM_WATSON_CRED_PASSWORD = os.environ.get("IBM_WATSON_CRED_PASSWORD", None) # Get a Free API Key from OCR.Space OCR_SPACE_API_KEY = os.environ.get("OCR_SPACE_API_KEY", None) # Genius lyrics get this value from https://genius.com/developers both has GENIUS_API_TOKEN = os.environ.get("GENIUS_API_TOKEN", None) # Get your own API key from https://www.remove.bg/ REM_BG_API_KEY = os.environ.get("REM_BG_API_KEY", None) # Google Drive plugin https://telegra.ph/G-Drive-guide-for-catuserbot-01-01 G_DRIVE_CLIENT_ID = os.environ.get("G_DRIVE_CLIENT_ID", None) G_DRIVE_CLIENT_SECRET = os.environ.get("G_DRIVE_CLIENT_SECRET", None) G_DRIVE_FOLDER_ID = os.environ.get("G_DRIVE_FOLDER_ID", None) G_DRIVE_AUTH_TOKEN_DATA = os.environ.get("G_DRIVE_AUTH_TOKEN_DATA", None) G_DRIVE_DATA = os.environ.get("G_DRIVE_DATA", None) G_DRIVE_INDEX_LINK = os.environ.get("G_DRIVE_INDEX_LINK", None) # For transfer channel 2 step verification code of telegram TG_2STEP_VERIFICATION_CODE = os.environ.get("TG_2STEP_VERIFICATION_CODE", None) # JustWatch Country for watch plugin WATCH_COUNTRY = os.environ.get("WATCH_COUNTRY", "IN") # Last.fm plugin https://telegra.ph/Guide-for-LASTFM-02-03 BIO_PREFIX = os.environ.get("BIO_PREFIX", None) LASTFM_API = os.environ.get("LASTFM_API", None) LASTFM_SECRET = os.environ.get("LASTFM_SECRET", None) LASTFM_USERNAME = os.environ.get("LASTFM_USERNAME", None) LASTFM_PASSWORD_PLAIN = os.environ.get("LASTFM_PASSWORD", None) # SpamWatch API you can get it from get api from http://t.me/SpamWatchBot?start=token SPAMWATCH_API = os.environ.get("SPAMWATCH_API", None) # can get from https://coffeehouse.intellivoid.net/ LYDIA_API_KEY = os.environ.get("LYDIA_API_KEY", None) # github vars GITHUB_ACCESS_TOKEN = os.environ.get("GITHUB_ACCESS_TOKEN", None) GIT_REPO_NAME = os.environ.get("GIT_REPO_NAME", None) # Deepai value can get from https://deepai.org/ DEEP_AI = os.environ.get("DEEP_AI", None) # DO NOT EDIT BELOW THIS LINE IF YOU DO NOT KNOW WHAT YOU ARE DOING # TG API limit. A message can have maximum 4096 characters! MAX_MESSAGE_SIZE_LIMIT = 4095 # specify LOAD and NO_LOAD LOAD = [] # warn mode for anti flood ANTI_FLOOD_WARN_MODE = ChatBannedRights( until_date=None, view_messages=None, send_messages=True ) CHROME_BIN = os.environ.get("CHROME_BIN", "/app/.apt/usr/bin/google-chrome") CHROME_DRIVER = os.environ.get( "CHROME_DRIVER", "/app/.chromedriver/bin/chromedriver" ) # for sed plugin GROUP_REG_SED_EX_BOT_S = os.environ.get( "GROUP_REG_SED_EX_BOT_S", r"(regex|moku|BananaButler_|rgx|l4mR)bot" ) # time.py COUNTRY = str(os.environ.get("COUNTRY", "")) TZ_NUMBER = int(os.environ.get("TZ_NUMBER", 1)) # For updater plugin UPSTREAM_REPO_BRANCH = os.environ.get("UPSTREAM_REPO_BRANCH", "master")
async def locks(event): input_str = event.pattern_match.group(1).lower() peer_id = event.chat_id msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None changeinfo = None if input_str == "msg": msg = True what = "Pesan" elif input_str == "media": media = True what = "Media" elif input_str == "sticker": sticker = True what = "Sticker" elif input_str == "gif": gif = True what = "GIF" elif input_str == "game": gamee = True what = "Game" elif input_str == "inline": ainline = True what = "Inline Bot" elif input_str == "poll": gpoll = True what = "Poll" elif input_str == "invite": adduser = True what = "Invite" elif input_str == "pin": cpin = True what = "Pin" elif input_str == "info": changeinfo = True what = "Info" elif input_str == "all": msg = True media = True sticker = True gif = True gamee = True ainline = True gpoll = True adduser = True cpin = True changeinfo = True what = "Semuanya" else: if not input_str: await event.edit("`Mohon Maaf, Apa Yang Harus Saya Kunci?`") return else: await event.edit(f"`Jenis Yang Mau Anda Kunci Tidak Valid` `{input_str}`") return lock_rights = ChatBannedRights( until_date=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: await event.client( EditChatDefaultBannedRightsRequest(peer=peer_id, banned_rights=lock_rights) ) await event.edit(f"`Master Telah Mengunci {what} Untuk Obrolan Ini!!`") except BaseException as e: await event.edit( f"`Apakah Master Mempunyai Izin Melakukan Itu Disini?`\n**Kesalahan:** {str(e)}" ) return
p, types.ChannelParticipantAdmin) and p.admin_rights.change_info) @register(pattern="^/nsfw") async def nsfw(event): if event.is_private: return if event.is_group: pass if is_nsfwatch_indb(str(event.chat_id)): await event.reply("`This Chat has Enabled NSFW watch`") else: await event.reply("`NSfw Watch is off for this chat`") MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=False) @register(pattern="^/addnsfw") async def nsfw_watch(event): if event.is_private: return if event.is_group: if not await can_change_info(message=event): return else: pass if is_nsfwatch_indb(str(event.chat_id)): await event.reply("`This Chat Has Already Enabled Nsfw Watch.`") return add_nsfwatch(str(event.chat_id))
NO_ADMIN = "`I am not an admin!`" NO_PERM = "`I don't have sufficient permissions!`" NO_SQL = "`Running on Non-SQL mode!`" CHAT_PP_CHANGED = "`Chat Picture Changed`" CHAT_PP_ERROR = ("`Some issue with updating the pic,`" "`maybe coz I'm not an admin,`" "`or don't have enough rights.`") INVALID_MEDIA = "`Invalid Extension`" BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) UNBAN_RIGHTS = ChatBannedRights( until_date=None, send_messages=None, send_media=None, send_stickers=None, send_gifs=None, send_games=None, send_inline=None, embed_links=None,
async def _(event): try: if event.fwd_from: return if event.is_private: return if event.is_group: if await is_register_admin(event.input_chat, event.message.sender_id): pass else: return quew = event.pattern_match.group(1) if event.reply_to_msg_id: warn_reason = event.text[len("/warn ") :] if not warn_reason: await event.reply("Please provide a reason for warning.") return reply_message = await event.get_reply_message() if not await is_register_admin(event.input_chat, reply_message.sender_id): pass else: await event.reply("I am not gonna warn an admin") return if reply_message.sender_id == BOT_ID: await event.reply("Why are you trying to warn me ?") return limit, soft_warn = sql.get_warn_setting(event.chat_id) num_warns, reasons = sql.warn_user( reply_message.sender_id, event.chat_id, warn_reason ) if num_warns >= limit: sql.reset_warns(reply_message.sender_id, event.chat_id) if sql.get_warn_strength(event.chat_id) == "kick": await tbot.kick_participant(event.chat_id, reply_message.sender_id) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format( limit, reply_message.sender_id, reply_message.sender.first_name ) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "ban": BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) await tbot( EditBannedRequest( event.chat_id, reply_message.sender_id, BANNED_RIGHTS ) ) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format( limit, reply_message.sender_id, reply_message.sender.first_name ) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "mute": MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True) await tbot( EditBannedRequest( event.chat_id, reply_message.sender_id, MUTE_RIGHTS ) ) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format( limit, reply_message.sender_id, reply_message.sender.first_name ) await event.reply(reply, parse_mode="html") return else: reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format( reply_message.sender_id, reply_message.sender.first_name, num_warns, limit, ) if warn_reason: reply += "\nReason: {}".format(html.escape(warn_reason)) chat_id = event.chat_id rules = rulesql.get_rules(chat_id) if rules: await event.reply( reply, buttons=[ [ Button.inline( "Remove Warn ✖️", data=f"rm_warn-{reply_message.sender_id}", ), Button.inline( "Rules ✝️", data=f"start-ruleswarn-{reply_message.sender_id}", ), ] ], parse_mode="html", ) else: await event.reply( reply, buttons=[ [ Button.inline( "Remove Warn ✖️", data=f"rm_warn-{reply_message.sender_id}", ) ] ], parse_mode="html", ) if not event.reply_to_msg_id and quew: if "|" in quew: iid, reasonn = quew.split("|") cid = iid.strip() reason = reasonn.strip() if cid.isnumeric(): cid = int(cid) entity = await tbot.get_entity(cid) try: r_sender_id = entity.id r_sender_fname = entity.first_name except Exception: await event.reply("Couldn't fetch that user.") return if not reason: await event.reply("Please provide a reason for warning.") return warn_reason = reason if not await is_register_admin(event.input_chat, r_sender_id): pass else: await event.reply("I am not gonna warn an admin") return if r_sender_id == BOT_ID: await event.reply("Why are you trying to warn me ?") return limit, soft_warn = sql.get_warn_setting(event.chat_id) num_warns, reasons = sql.warn_user(r_sender_id, event.chat_id, warn_reason) if num_warns >= limit: sql.reset_warns(r_sender_id, event.chat_id) if sql.get_warn_strength(event.chat_id) == "kick": await tbot.kick_participant(event.chat_id, r_sender_id) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format( limit, r_sender_id, r_sender_fname ) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "ban": BANNED_RIGHTS = ChatBannedRights( until_date=None, view_messages=True, send_messages=True, send_media=True, send_stickers=True, send_gifs=True, send_games=True, send_inline=True, embed_links=True, ) await tbot( EditBannedRequest(event.chat_id, r_sender_id, BANNED_RIGHTS) ) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format( limit, r_sender_id, r_sender_fname ) await event.reply(reply, parse_mode="html") return if sql.get_warn_strength(event.chat_id) == "mute": MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True) await tbot( EditBannedRequest(event.chat_id, r_sender_id, MUTE_RIGHTS) ) reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format( limit, r_sender_id, r_sender_fname ) await event.reply(reply, parse_mode="html") return else: reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format( r_sender_id, r_sender_fname, num_warns, limit ) if warn_reason: reply += "\nReason: {}".format(html.escape(warn_reason)) chat_id = event.chat_id rules = rulesql.get_rules(chat_id) if rules: await event.reply( reply, buttons=[ [ Button.inline( "Remove Warn ✖️", data=f"rm_warn-{r_sender_id}" ), Button.inline( "Rules ✝️", data=f"start-ruleswarn-{r_sender_id}" ), ] ], parse_mode="html", ) else: await event.reply( reply, buttons=[ [Button.inline("Remove Warn ✖️", data=f"rm_warn-{r_sender_id}")] ], parse_mode="html", ) except Exception as e: print(e)