sudoers.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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("Successfully Nekofied",
  44. reply_markup=keyb)
  45. else:
  46. await client.answer_callback_query(
  47. query.id, "'Blue Button Must Press', huh?", show_alert=True
  48. )
  49. # SpeedTest Module
  50. def speed_convert(size):
  51. power = 2 ** 10
  52. zero = 0
  53. units = {0: "", 1: "Kb/s", 2: "Mb/s", 3: "Gb/s", 4: "Tb/s"}
  54. while size > power:
  55. size /= power
  56. zero += 1
  57. return f"{round(size, 2)} {units[zero]}"
  58. @app.on_message(
  59. filters.user(SUDOERS) & cust_filter.command(commands=("speedtest"))
  60. )
  61. async def speeeed(client, message):
  62. app.set_parse_mode("markdown")
  63. m = await message.reply_text("```Performing A Speedtest!```")
  64. speed = speedtest.Speedtest()
  65. x = speed.get_best_server()
  66. y = speed.download()
  67. z = speed.upload()
  68. await m.edit(f'''
  69. ```Download - {speed_convert(y)}
  70. Upload - {speed_convert(z)}
  71. Latency - {round((x["latency"]))} ms
  72. ```''')
  73. # Stats Module
  74. @ app.on_message(
  75. filters.user(SUDOERS) & cust_filter.command(commands=("stats"))
  76. )
  77. async def stats(client, message):
  78. bot_uptime = int(time.time() - bot_start_time)
  79. cpu = psutil.cpu_percent(interval=0.5)
  80. mem = psutil.virtual_memory().percent
  81. disk = psutil.disk_usage("/").percent
  82. if NEOFETCH == "True":
  83. os.system("neofetch --stdout > neofetch.txt")
  84. f = open("neofetch.txt", "r")
  85. read_file = f.read()
  86. neofetch = (f'''
  87. ----------[Neofetch]----------
  88. {read_file}
  89. ''')
  90. f.close()
  91. else:
  92. neofetch = "NeoFetch Is Disabled!"
  93. stats = (f'''
  94. ```
  95. ----------[Stats]----------
  96. Uptime: {formatter.get_readable_time((bot_uptime))}
  97. CPU: {cpu}%
  98. RAM: {mem}%
  99. Disk: {disk}%
  100. {neofetch}
  101. ```''')
  102. await message.reply_text(stats)