sudoers.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 import app, SUDOERS, bot_start_time
  8. from wbb.utils.errors import capture_err
  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 in SUDOERS:
  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)