bot_owner.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from wbb.utils import cust_filter, nekobin, formatter
  2. from wbb import app, Command, OWNER_ID, bot_start_time, NEOFETCH
  3. from pyrogram import filters, types
  4. import re, speedtest, psutil, time, os
  5. __MODULE__ = "BotOwner"
  6. __HELP__ = '''
  7. /log - To Get Logs From Last Run.
  8. /speedtest - To Perform A Speedtest.
  9. /stats - For Bot Owner To Check System Status.
  10. '''
  11. #Logs Module
  12. @app.on_message(filters.user(OWNER_ID) & cust_filter.command("log"))
  13. async def logs_chat(client, message):
  14. keyb = types.InlineKeyboardMarkup(
  15. [
  16. [
  17. types.InlineKeyboardButton(
  18. "Paste on Nekobin", callback_data="paste_log_nekobin"
  19. )
  20. ]
  21. ]
  22. )
  23. await message.reply_document(
  24. "error.log", caption="**Here are my Logs ~**", reply_markup=keyb
  25. )
  26. def logs_callback(_, __, query):
  27. if re.match("paste_log_nekobin", query.data):
  28. return True
  29. logs_create = filters.create(logs_callback)
  30. @app.on_callback_query(logs_create)
  31. async def paste_log_neko(client, query):
  32. if query.from_user.id == OWNER_ID:
  33. f = open("error.log", "r")
  34. data = await nekobin.neko(f.read())
  35. keyb = types.InlineKeyboardMarkup(
  36. [[types.InlineKeyboardButton("pasted on nekobin", url=f"{data}")]]
  37. )
  38. await query.message.edit_caption("Successfully Nekofied", reply_markup=keyb)
  39. else:
  40. await client.answer_callback_query(
  41. query.id, "'Blue Button Must Press', huh?", show_alert=True
  42. )
  43. #SpeedTest Module
  44. def speed_convert(size):
  45. power = 2 ** 10
  46. zero = 0
  47. units = {0: "", 1: "Kb/s", 2: "Mb/s", 3: "Gb/s", 4: "Tb/s"}
  48. while size > power:
  49. size /= power
  50. zero += 1
  51. return f"{round(size, 2)} {units[zero]}"
  52. @app.on_message(filters.user(OWNER_ID) & cust_filter.command(commands=("speedtest")))
  53. async def speeeed(client, message):
  54. app.set_parse_mode("markdown")
  55. m = await message.reply_text("```Performing A Speedtest!```")
  56. speed = speedtest.Speedtest()
  57. x = speed.get_best_server()
  58. y = speed.download()
  59. z = speed.upload()
  60. await m.edit(f'''
  61. ```Download - {speed_convert(y)}
  62. Upload - {speed_convert(z)}
  63. Latency - {round((x["latency"]))} ms
  64. ```''')
  65. #Stats Module
  66. @app.on_message(filters.user(OWNER_ID) & cust_filter.command(commands=("stats")))
  67. async def stats(client, message):
  68. bot_uptime = int(time.time() - bot_start_time)
  69. cpu = psutil.cpu_percent(interval=0.5)
  70. mem = psutil.virtual_memory().percent
  71. disk = psutil.disk_usage("/").percent
  72. if NEOFETCH == "True":
  73. os.system("neofetch --stdout > neofetch.txt")
  74. f = open("neofetch.txt", "r")
  75. read_file = f.read()
  76. neofetch = (f'''
  77. ----------[Neofetch]----------
  78. {read_file}
  79. ''')
  80. f.close()
  81. else:
  82. neofetch = "NeoFetch Is Disabled!"
  83. stats = (f'''
  84. ```_________________________
  85. |________|Stats|________|
  86. | |
  87. | Uptime: {formatter.get_readable_time((bot_uptime))}|
  88. | CPU: {cpu}% |
  89. | RAM: {mem}% |
  90. | Disk: {disk}% |
  91. |_______________________|
  92. {neofetch}
  93. ```''')
  94. await message.reply_text(stats)