sudoers.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import re
  2. import time
  3. from pyrogram import filters, types
  4. import speedtest
  5. import psutil
  6. from wbb.utils import nekobin, formatter
  7. from wbb.utils.errors import capture_err
  8. from wbb import app, SUDOERS, bot_start_time
  9. __MODULE__ = "Sudoers"
  10. __HELP__ = '''/log - To Get Logs From Last Run.
  11. /speedtest - To Perform A Speedtest.
  12. /stats - To Check System Status.
  13. /song - To Download Songs From JioSaavn'''
  14. # Logs Module
  15. @app.on_message(filters.user(SUDOERS) & filters.command("log"))
  16. @capture_err
  17. async def logs_chat(_, 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) & filters.command("speedtest")
  59. )
  60. @capture_err
  61. async def get_speedtest_result(_, message):
  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) & filters.command("stats")
  75. )
  76. @capture_err
  77. async def get_stats(_, 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. stats = (f'''```Uptime: {formatter.get_readable_time((bot_uptime))}
  83. CPU: {cpu}%
  84. RAM: {mem}%
  85. Disk: {disk}%```''')
  86. await message.reply_text(stats)