dbfunctions.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. from wbb import db
  2. from typing import Dict, List, Union
  3. notesdb = db.notes
  4. filtersdb = db.filters
  5. warnsdb = db.warns
  6. karmadb = db.karma
  7. usersdb = db.users
  8. chatsdb = db.chats
  9. """ Notes functions """
  10. async def _get_notes(chat_id: int) -> Dict[str, int]:
  11. _notes = await notesdb.find_one({"chat_id": chat_id})
  12. if _notes:
  13. _notes = _notes["notes"]
  14. else:
  15. _notes = {}
  16. return _notes
  17. async def get_note_names(chat_id: int) -> List[str]:
  18. _notes = []
  19. for note in await _get_notes(chat_id):
  20. _notes.append(note)
  21. return _notes
  22. async def get_note(chat_id: int, name: str) -> Union[bool, dict]:
  23. name = name.lower().strip()
  24. _notes = await _get_notes(chat_id)
  25. if name in _notes:
  26. return _notes[name]
  27. else:
  28. return False
  29. async def save_note(chat_id: int, name: str, note: dict):
  30. name = name.lower().strip()
  31. _notes = await _get_notes(chat_id)
  32. _notes[name] = note
  33. await notesdb.update_one(
  34. {"chat_id": chat_id},
  35. {
  36. "$set": {
  37. "notes": _notes
  38. }
  39. },
  40. upsert=True
  41. )
  42. async def delete_note(chat_id: int, name: str) -> bool:
  43. notesd = await _get_notes(chat_id)
  44. name = name.lower().strip()
  45. if name in notesd:
  46. del notesd[name]
  47. await notesdb.update_one(
  48. {"chat_id": chat_id},
  49. {
  50. "$set": {
  51. "notes": notesd
  52. }
  53. },
  54. upsert=True
  55. )
  56. return True
  57. return False
  58. """ Filters funcions """
  59. async def _get_filters(chat_id: int) -> Dict[str, int]:
  60. _filters = await filtersdb.find_one({"chat_id": chat_id})
  61. if _filters:
  62. _filters = _filters['filters']
  63. else:
  64. _filters = {}
  65. return _filters
  66. async def get_filters_names(chat_id: int) -> List[str]:
  67. _filters = []
  68. for _filter in await _get_filters(chat_id):
  69. _filters.append(_filter)
  70. return _filters
  71. async def get_filter(chat_id: int, name: str) -> Union[bool, dict]:
  72. name = name.lower().strip()
  73. _filters = await _get_filters(chat_id)
  74. if name in _filters:
  75. return _filters[name]
  76. else:
  77. return False
  78. async def save_filter(chat_id: int, name: str, _filter: dict):
  79. name = name.lower().strip()
  80. _filters = await _get_filters(chat_id)
  81. _filters[name] = _filter
  82. await filtersdb.update_one(
  83. {"chat_id": chat_id},
  84. {
  85. "$set": {
  86. "filters": _filters
  87. }
  88. },
  89. upsert=True
  90. )
  91. async def delete_filter(chat_id: int, name: str) -> bool:
  92. filtersd = await _get_filters(chat_id)
  93. name = name.lower().strip()
  94. if name in filtersd:
  95. del filtersd[name]
  96. await filtersdb.update_one(
  97. {"chat_id": chat_id},
  98. {
  99. "$set": {
  100. "filters": filtersd
  101. }
  102. },
  103. upsert=True
  104. )
  105. return True
  106. return False
  107. """ Warn functions """
  108. async def int_to_alpha(user_id: int) -> str:
  109. alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  110. text = ""
  111. user_id = str(user_id)
  112. for i in user_id:
  113. text += alphabet[int(i)]
  114. return text
  115. async def alpha_to_int(user_id_alphabet: str) -> int:
  116. alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  117. user_id = ""
  118. for i in user_id_alphabet:
  119. index = alphabet.index(i)
  120. user_id += str(index)
  121. user_id = int(user_id)
  122. return user_id
  123. async def get_warns(chat_id: int) -> Dict[str, int]:
  124. warns = await warnsdb.find_one({"chat_id": chat_id})
  125. if warns:
  126. warns = warns['warns']
  127. else:
  128. warns = {}
  129. return warns
  130. async def get_warn(chat_id: int, name: str) -> Union[bool, dict]:
  131. name = name.lower().strip()
  132. warns = await get_warns(chat_id)
  133. if name in warns:
  134. return warns[name]
  135. async def add_warn(chat_id: int, name: str, warn: dict):
  136. name = name.lower().strip()
  137. warns = await get_warns(chat_id)
  138. warns[name] = warn
  139. await warnsdb.update_one(
  140. {"chat_id": chat_id},
  141. {
  142. "$set": {
  143. "warns": warns
  144. }
  145. },
  146. upsert=True
  147. )
  148. async def remove_warns(chat_id: int, name: str) -> bool:
  149. warnsd = await get_warns(chat_id)
  150. name = name.lower().strip()
  151. if name in warnsd:
  152. del warnsd[name]
  153. await warnsdb.update_one(
  154. {"chat_id": chat_id},
  155. {
  156. "$set": {
  157. "warns": warnsd
  158. }
  159. },
  160. upsert=True
  161. )
  162. return True
  163. return False
  164. """ Karma functions """
  165. async def get_karmas(chat_id: int) -> Dict[str, int]:
  166. karma = await karmadb.find_one({"chat_id": chat_id})
  167. if karma:
  168. karma = karma['karma']
  169. else:
  170. karma = {}
  171. return karma
  172. async def get_karma(chat_id: int, name: str) -> Union[bool, dict]:
  173. name = name.lower().strip()
  174. karmas = await get_karmas(chat_id)
  175. if name in karmas:
  176. return karmas[name]
  177. async def update_karma(chat_id: int, name: str, karma: dict):
  178. name = name.lower().strip()
  179. karmas = await get_karmas(chat_id)
  180. karmas[name] = karma
  181. await karmadb.update_one(
  182. {"chat_id": chat_id},
  183. {
  184. "$set": {
  185. "karma": karmas
  186. }
  187. },
  188. upsert=True
  189. )
  190. """ Chats log functions """
  191. async def is_served_chat(chat_id: int) -> bool:
  192. chats = await chatsdb.find_one({"chats": "chats"})
  193. chats = chats['chats']
  194. for chat in chats:
  195. if chat == await int_to_alpha(chat_id): return True
  196. async def get_served_chats():
  197. chats = await chatsdb.find_one({"chats": "chats"})
  198. chats = chats['chats']
  199. return chats
  200. async def add_served_chat(chat_id: int):
  201. is_served = await is_served_chat(chat_id)
  202. if is_served: return
  203. chats = await get_served_chats()
  204. chats[await int_to_alpha(chat_id)] = {"chat_id": chat_id}
  205. await chatsdb.update_one(
  206. {"chats": "chats"},
  207. {
  208. "$set": {
  209. "chats": chats
  210. }
  211. },
  212. upsert=True
  213. )
  214. async def remove_served_chat(chat_id: int):
  215. is_served = await is_served_chat(chat_id)
  216. if not is_served: return
  217. chats = await get_served_chats()
  218. del chats[await int_to_alpha(chat_id)]
  219. await chatsdb.update_one(
  220. {"chats": "chats"},
  221. {
  222. "$set": {
  223. "chats": chats
  224. }
  225. },
  226. upsert=True
  227. )