bot_owner.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from wbb.utils import cust_filter, nekobin, formater
  2. from wbb import app, Command, OWNER_ID, bot_start_time
  3. from pyrogram import filters, types
  4. import re, speedtest, psutil, time
  5. __MODULE__ = "BotOwner"
  6. __HELP__ = '''
  7. /log - To Get Logs From Last Run.
  8. /speedtest - To Perform A Speedtest.
  9. /stats - For Bot Owner To Check System Status.
  10. '''
  11. #Logs Module
  12. @app.on_message(filters.user(OWNER_ID) & cust_filter.command("log"))
  13. async def logs_chat(client, message):
  14. keyb = types.InlineKeyboardMarkup(
  15. [
  16. [
  17. types.InlineKeyboardButton(
  18. "Paste on Nekobin", callback_data="paste_log_nekobin"
  19. )
  20. ]
  21. ]
  22. )
  23. await message.reply_document(
  24. "error.log", caption="**Here are my Logs ~**", reply_markup=keyb
  25. )
  26. def logs_callback(_, __, query):
  27. if re.match("paste_log_nekobin", query.data):
  28. return True
  29. logs_create = filters.create(logs_callback)
  30. @app.on_callback_query(logs_create)
  31. async def paste_log_neko(client, query):
  32. if query.from_user.id == OWNER_ID:
  33. f = open("error.log", "r")
  34. data = await nekobin.neko(f.read())
  35. keyb = types.InlineKeyboardMarkup(
  36. [[types.InlineKeyboardButton("pasted on nekobin", url=f"{data}")]]
  37. )
  38. await query.message.edit_caption("Successfully Nekofied", reply_markup=keyb)
  39. else:
  40. await client.answer_callback_query(
  41. query.id, "'Blue Button Must Press', huh?", show_alert=True
  42. )
  43. #SpeedTest Module
  44. def speed_convert(size):
  45. power = 2 ** 10
  46. zero = 0
  47. units = {0: "", 1: "Kb/s", 2: "Mb/s", 3: "Gb/s", 4: "Tb/s"}
  48. while size > power:
  49. size /= power
  50. zero += 1
  51. return f"{round(size, 2)} {units[zero]}"
  52. @app.on_message(filters.user(OWNER_ID) & cust_filter.command(commands=(["speedtest"])))
  53. async def speeeed(client, message):
  54. app.set_parse_mode("markdown")
  55. m = await message.reply_text("```Performing A Speedtest!```")
  56. speed = speedtest.Speedtest()
  57. x = speed.get_best_server()
  58. y = speed.download()
  59. z = speed.upload()
  60. await m.edit(f'''
  61. ```Download - {speed_convert(y)}
  62. Upload - {speed_convert(z)}
  63. Latency - {round((x["latency"]))} ms
  64. ```''')
  65. #Stats Module
  66. @app.on_message(filters.user(OWNER_ID) & cust_filter.command(commands=(["stats"])))
  67. async def stats(client, message):
  68. cpu = psutil.cpu_percent(interval=0.5)
  69. mem = psutil.virtual_memory().percent
  70. disk = psutil.disk_usage("/").percent
  71. stats = (f'''
  72. ```Uptime: {formater.get_readable_time((time.time() - bot_start_time))}
  73. CPU: {cpu}%
  74. RAM: {mem}%
  75. Disk: {disk}%```''')
  76. await message.reply_text(stats)