sudoers.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. from pyrogram.types import Message
  5. import re
  6. import speedtest
  7. import psutil
  8. import time
  9. import os
  10. __MODULE__ = "Sudoers"
  11. __HELP__ = '''
  12. /log - To Get Logs From Last Run.
  13. /speedtest - To Perform A Speedtest.
  14. /stats - To Check System Status.
  15. '''
  16. SUDOERS = [OWNER_ID, SUDO_USER_ID]
  17. # Logs Module
  18. @app.on_message(filters.user(SUDOERS) & cust_filter.command("log"))
  19. async def logs_chat(client, message: Message):
  20. keyb = types.InlineKeyboardMarkup(
  21. [
  22. [
  23. types.InlineKeyboardButton(
  24. "Paste on Nekobin", callback_data="paste_log_nekobin"
  25. )
  26. ]
  27. ]
  28. )
  29. await message.reply_document(
  30. "error.log", reply_markup=keyb
  31. )
  32. def logs_callback(_, __, query):
  33. if re.match("paste_log_nekobin", query.data):
  34. return True
  35. logs_create = filters.create(logs_callback)
  36. @app.on_callback_query(logs_create)
  37. async def paste_log_neko(client, query):
  38. if query.from_user.id == OWNER_ID or SUDO_USER_ID:
  39. f = open("error.log", "r")
  40. data = await nekobin.neko(f.read())
  41. keyb = types.InlineKeyboardMarkup(
  42. [[types.InlineKeyboardButton("Pasted!", url=f"{data}")]]
  43. )
  44. await query.message.edit_caption("Successfully Nekofied",
  45. reply_markup=keyb)
  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(SUDOERS) & cust_filter.command(commands=("speedtest"))
  61. )
  62. async def speeeed(client, message: 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(SUDOERS) & cust_filter.command(commands=("stats"))
  77. )
  78. async def stats(client, message: 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. Uptime: {formatter.get_readable_time((bot_uptime))}
  98. CPU: {cpu}%
  99. RAM: {mem}%
  100. Disk: {disk}%
  101. {neofetch}
  102. ```''')
  103. await message.reply_text(stats)