dbfunctions.py 4.2 KB

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