karma.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from wbb import app
  2. from wbb.utils.errors import capture_err
  3. from wbb.utils.json_prettify import json_prettify
  4. from wbb.utils.dbfunctions import (update_karma, get_karma, get_karmas,
  5. int_to_alpha, alpha_to_int)
  6. from pyrogram import filters
  7. regex_upvote = r"^((?i)\+|\+\+|\+1|thx|tnx|ty|thank you|thanx|thanks|pro|cool|good|👍)$"
  8. regex_downvote = r"^(\-|\-\-|\-1|👎)$"
  9. @app.on_message(filters.text
  10. & filters.group
  11. & filters.incoming
  12. & filters.reply
  13. & filters.regex(regex_upvote)
  14. & ~filters.via_bot
  15. & ~filters.bot
  16. & ~filters.edited, group=3)
  17. async def upvote(_, message):
  18. if message.reply_to_message.from_user.id == message.from_user.id:
  19. return
  20. chat_id = message.chat.id
  21. user_id = message.reply_to_message.from_user.id
  22. user_mention = message.reply_to_message.from_user.mention
  23. current_karma = await get_karma(chat_id, await int_to_alpha(user_id))
  24. if current_karma:
  25. current_karma = current_karma['karma']
  26. karma = current_karma + 1
  27. new_karma = {"karma": karma}
  28. await update_karma(chat_id, await int_to_alpha(user_id), new_karma)
  29. else:
  30. karma = 1
  31. new_karma = {"karma": karma}
  32. await update_karma(chat_id, await int_to_alpha(user_id), new_karma)
  33. await message.reply_text(
  34. f'Incremented Karma of {user_mention} By 1 \nTotal Points: {karma}'
  35. )
  36. @app.on_message(filters.text
  37. & filters.group
  38. & filters.incoming
  39. & filters.reply
  40. & filters.regex(regex_downvote)
  41. & ~filters.via_bot
  42. & ~filters.bot
  43. & ~filters.edited, group=4)
  44. async def downvote(_, message):
  45. if message.reply_to_message.from_user.id == message.from_user.id:
  46. return
  47. chat_id = message.chat.id
  48. user_id = message.reply_to_message.from_user.id
  49. user_mention = message.reply_to_message.from_user.mention
  50. current_karma = await get_karma(chat_id, await int_to_alpha(user_id))
  51. if current_karma:
  52. current_karma = current_karma['karma']
  53. karma = current_karma - 1
  54. new_karma = {"karma": karma}
  55. await update_karma(chat_id, await int_to_alpha(user_id), new_karma)
  56. else:
  57. karma = 1
  58. new_karma = {"karma": karma}
  59. await update_karma(chat_id, await int_to_alpha(user_id), new_karma)
  60. await message.reply_text(
  61. f'Decremented Karma Of {user_mention} By 1 \nTotal Points: {karma}'
  62. )
  63. @app.on_message(filters.command("karma") & filters.group)
  64. async def karma(_, message):
  65. chat_id = message.chat.id
  66. if not message.reply_to_message:
  67. karma = await get_karmas(chat_id)
  68. msg = f"**Karma list of {message.chat.title}:- **\n"
  69. # output = await json_prettify(karma)
  70. limit = 0
  71. for i in karma:
  72. if limit > 9:
  73. break
  74. ii = ""
  75. user_id = await alpha_to_int(i)
  76. user_karma = karma[i]['karma']
  77. user_name = (await app.get_users(user_id)).username
  78. ii += f"{user_name} {user_karma}"
  79. msg += f"`{ii}`\n"
  80. limit += 1
  81. await message.reply_text(msg)
  82. else:
  83. user_id = message.reply_to_message.from_user.id
  84. karma = await get_karma(chat_id, await int_to_alpha(user_id))
  85. if karma:
  86. karma = karma['karma']
  87. await message.reply_text(f'**Total Points**: __{karma}__')
  88. else:
  89. karma = 0
  90. await message.reply_text(f'**Total Points**: __{karma}__')