sudoers.py 3.1 KB

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