sudoers.py 3.2 KB

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