bot_owner.py 3.2 KB

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