dbfunctions.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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. """ Notes functions """
  8. async def _get_notes(chat_id: int) -> Dict[str, int]:
  9. _notes = await notesdb.find_one({"chat_id": chat_id})
  10. if _notes:
  11. _notes = _notes["notes"]
  12. else:
  13. _notes = {}
  14. return _notes
  15. async def get_note_names(chat_id: int) -> List[str]:
  16. _notes = []
  17. for note in await _get_notes(chat_id):
  18. _notes.append(note)
  19. return _notes
  20. async def get_note(chat_id: int, name: str) -> Union[bool, dict]:
  21. name = name.lower().strip()
  22. _notes = await _get_notes(chat_id)
  23. if name in _notes:
  24. return _notes[name]
  25. else:
  26. return False
  27. async def save_note(chat_id: int, name: str, note: dict):
  28. name = name.lower().strip()
  29. _notes = await _get_notes(chat_id)
  30. _notes[name] = note
  31. await notesdb.update_one(
  32. {"chat_id": chat_id},
  33. {
  34. "$set": {
  35. "notes": _notes
  36. }
  37. },
  38. upsert=True
  39. )
  40. async def delete_note(chat_id: int, name: str) -> bool:
  41. notesd = await _get_notes(chat_id)
  42. name = name.lower().strip()
  43. if name in notesd:
  44. del notesd[name]
  45. await notesdb.update_one(
  46. {"chat_id": chat_id},
  47. {
  48. "$set": {
  49. "notes": notesd
  50. }
  51. },
  52. upsert=True
  53. )
  54. return True
  55. return False
  56. """ Filters funcions """
  57. async def _get_filters(chat_id: int) -> Dict[str, int]:
  58. _filters = await filtersdb.find_one({"chat_id": chat_id})
  59. if _filters:
  60. _filters = _filters['filters']
  61. else:
  62. _filters = {}
  63. return _filters
  64. async def get_filters_names(chat_id: int) -> List[str]:
  65. _filters = []
  66. for _filter in await _get_filters(chat_id):
  67. _filters.append(_filter)
  68. return _filters
  69. async def get_filter(chat_id: int, name: str) -> Union[bool, dict]:
  70. name = name.lower().strip()
  71. _filters = await _get_filters(chat_id)
  72. if name in _filters:
  73. return _filters[name]
  74. else:
  75. return False
  76. async def save_filter(chat_id: int, name: str, _filter: dict):
  77. name = name.lower().strip()
  78. _filters = await _get_filters(chat_id)
  79. _filters[name] = _filter
  80. await filtersdb.update_one(
  81. {"chat_id": chat_id},
  82. {
  83. "$set": {
  84. "filters": _filters
  85. }
  86. },
  87. upsert=True
  88. )
  89. async def delete_filter(chat_id: int, name: str) -> bool:
  90. filtersd = await _get_filters(chat_id)
  91. name = name.lower().strip()
  92. if name in filtersd:
  93. del filtersd[name]
  94. await filtersdb.update_one(
  95. {"chat_id": chat_id},
  96. {
  97. "$set": {
  98. "filters": filtersd
  99. }
  100. },
  101. upsert=True
  102. )
  103. return True
  104. return False
  105. """ Warn function """
  106. async def int_to_alpha(user_id: int) -> str:
  107. alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  108. text = ""
  109. user_id = str(user_id)
  110. for i in user_id:
  111. text += alphabet[int(i)]
  112. return text
  113. async def alpha_to_int(user_id_alphabet: str) -> int:
  114. alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  115. user_id = ""
  116. for i in user_id_alphabet:
  117. index = alphabet.index(i)
  118. user_id += str(index)
  119. user_id = int(user_id)
  120. return user_id
  121. async def get_warns(chat_id: int) -> Dict[str, int]:
  122. warns = await warnsdb.find_one({"chat_id": chat_id})
  123. if warns:
  124. warns = warns['warns']
  125. else:
  126. warns = {}
  127. return warns
  128. async def get_warn(chat_id: int, name: str) -> Union[bool, dict]:
  129. name = name.lower().strip()
  130. warns = await get_warns(chat_id)
  131. if name in warns:
  132. return warns[name]
  133. async def add_warn(chat_id: int, name: str, warn: dict):
  134. name = name.lower().strip()
  135. warns = await get_warns(chat_id)
  136. warns[name] = warn
  137. await warnsdb.update_one(
  138. {"chat_id": chat_id},
  139. {
  140. "$set": {
  141. "warns": warns
  142. }
  143. },
  144. upsert=True
  145. )
  146. async def remove_warns(chat_id: int, name: str) -> bool:
  147. warnsd = await get_warns(chat_id)
  148. name = name.lower().strip()
  149. if name in warnsd:
  150. del warnsd[name]
  151. await warnsdb.update_one(
  152. {"chat_id": chat_id},
  153. {
  154. "$set": {
  155. "warns": warnsd
  156. }
  157. },
  158. upsert=True
  159. )
  160. return True
  161. return False
  162. """ Karma functions """
  163. async def get_karmas(chat_id: int) -> Dict[str, int]:
  164. karma = await karmadb.find_one({"chat_id": chat_id})
  165. if karma:
  166. karma = karma['karma']
  167. else:
  168. karma = {}
  169. return karma
  170. async def get_karma(chat_id: int, name: str) -> Union[bool, dict]:
  171. name = name.lower().strip()
  172. karmas = await get_karmas(chat_id)
  173. if name in karmas:
  174. return karmas[name]
  175. async def update_karma(chat_id: int, name: str, karma: dict):
  176. name = name.lower().strip()
  177. karmas = await get_karmas(chat_id)
  178. karmas[name] = karma
  179. await karmadb.update_one(
  180. {"chat_id": chat_id},
  181. {
  182. "$set": {
  183. "karma": karmas
  184. }
  185. },
  186. upsert=True
  187. )