| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import asyncio
- import uvloop
- import re
- import importlib
- from pyrogram import filters, idle
- from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
- from wbb import app, MOD_NOLOAD
- from wbb.utils import get_info, paginate_modules, cust_filter
- from wbb.utils import botinfo, formatter
- from wbb.modules import ALL_MODULES
- import time
- from wbb import bot_start_time
- loop = asyncio.get_event_loop()
- HELPABLE = {}
- async def start_bot():
- await app.start()
- await get_info(app)
- from wbb.utils import botinfo
- for module in ALL_MODULES:
- imported_module = importlib.import_module("wbb.modules." + module)
- if (
- hasattr(imported_module, "__MODULE__")
- and imported_module.__MODULE__
- ):
- if imported_module.__MODULE__.lower() in MOD_NOLOAD:
- continue
- imported_module.__MODULE__ = imported_module.__MODULE__
- if (
- hasattr(imported_module, "__HELP__")
- and imported_module.__HELP__
- ):
- HELPABLE[
- imported_module.__MODULE__.lower()
- ] = imported_module
- bot_modules = ""
- j = 1
- for i in ALL_MODULES:
- if j == 4:
- bot_modules += "|{:<15}|\n".format(i)
- j = 0
- else:
- bot_modules += "|{:<15}".format(i)
- j += 1
- print("+===============================================================+")
- print("| WBB - Modules |")
- print("+===============+===============+===============+===============+")
- print(bot_modules)
- print("+===============+===============+===============+===============+")
- print("Bot Started Successfully as {}!".format(botinfo.BOT_NAME))
- await idle()
- @app.on_message(cust_filter.command("start"))
- async def start(client, message):
- bot_uptime = int(time.time() - bot_start_time)
- await message.reply_text(
- f"Already Online Since {formatter.get_readable_time((bot_uptime))},"
- " Maybe Try /help")
- @app.on_message(cust_filter.command("help"))
- async def help_command(_, message):
- if message.chat.type != "private":
- if len(message.command) >= 2 and message.command[1] == "help":
- text, keyboard = await help_parser(message)
- await message.reply(
- text, reply_markup=keyboard, disable_web_page_preview=True
- )
- return
- keyboard = InlineKeyboardMarkup(
- [
- [
- InlineKeyboardButton(
- text="Help",
- url="t.me/" + botinfo.BOT_USERNAME + "?start=help",
- )
- ]
- ]
- )
- await message.reply("Contact me in PM.", reply_markup=keyboard)
- return
- text, keyboard = await help_parser(message)
- await message.reply(
- text,
- reply_markup=keyboard,
- disable_web_page_preview=True
- )
- async def help_parser(message, keyboard=None):
- if not keyboard:
- keyboard = InlineKeyboardMarkup(paginate_modules(0, HELPABLE, "help"))
- return (
- "Hi {first_name}, I am {bot_name}".format(
- first_name=message.from_user.first_name,
- bot_name=botinfo.BOT_NAME,
- ),
- keyboard,
- )
- @app.on_callback_query(filters.regex(r"help_(.*?)"))
- async def help_button(c, q):
- mod_match = re.match(r"help_module\((.+?)\)", q.data)
- prev_match = re.match(r"help_prev\((.+?)\)", q.data)
- next_match = re.match(r"help_next\((.+?)\)", q.data)
- back_match = re.match(r"help_back", q.data)
- create_match = re.match(r"help_create", q.data)
- if mod_match:
- module = mod_match.group(1)
- text = (
- "{} **{}**:\n".format(
- "Here is the help for", HELPABLE[module].__MODULE__
- )
- + HELPABLE[module].__HELP__
- )
- await q.message.edit(
- text=text,
- reply_markup=InlineKeyboardMarkup(
- [[InlineKeyboardButton("back", callback_data="help_back")]]
- ),
- disable_web_page_preview=True,
- )
- elif prev_match:
- curr_page = int(prev_match.group(1))
- await q.message.edit(
- text="Hi {first_name}. I am {bot_name}".format(
- first_name=q.from_user.first_name,
- bot_name=botinfo.BOT_NAME,
- ),
- reply_markup=InlineKeyboardMarkup(
- paginate_modules(curr_page - 1, HELPABLE, "help")
- ),
- disable_web_page_preview=True,
- )
- elif next_match:
- next_page = int(next_match.group(1))
- await q.message.edit(
- text="Hi {first_name}. I am {bot_name}".format(
- first_name=q.from_user.first_name,
- bot_name=botinfo.BOT_NAME,
- ),
- reply_markup=InlineKeyboardMarkup(
- paginate_modules(next_page + 1, HELPABLE, "help")
- ),
- disable_web_page_preview=True,
- )
- elif back_match:
- await q.message.edit(
- text="Hi {first_name}. I am {bot_name}".format(
- first_name=q.from_user.first_name,
- bot_name=botinfo.BOT_NAME,
- ),
- reply_markup=InlineKeyboardMarkup(
- paginate_modules(0, HELPABLE, "help")
- ),
- disable_web_page_preview=True,
- )
- elif create_match:
- text, keyboard = await help_parser(q)
- await q.message.edit(
- text=text, reply_markup=keyboard, disable_web_page_preview=True
- )
- return await c.answer_callback_query(q.id)
- if __name__ == "__main__":
- uvloop.install()
- loop.run_until_complete(start_bot())
|