config.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. from datetime import datetime
  2. import os
  3. from attr import dataclass
  4. from dotenv import load_dotenv
  5. load_dotenv()
  6. bot_key = os.getenv('BOT_KEY')
  7. chat_default = [os.getenv('CHAT_DEFAULT')]
  8. chunk_default = 3
  9. delta_day_default = 90
  10. @dataclass
  11. class AdditionalMessages:
  12. menu_tasks = "Let's check you tasks"
  13. menu_types = "Let's check your types"
  14. menu_subtypes = "Let's check your subtypes"
  15. menu_settings = "Let's check your settings"
  16. menu_characteristics = "Let's check your characteristics"
  17. @dataclass
  18. class ButtonsInput:
  19. button_present = '✅'
  20. button_empty = '❌'
  21. button_types = 'Types 🪢'
  22. button_subtypes = 'Subtypes 🧶'
  23. button_settings = 'Settings 🛠'
  24. button_help = 'Help ❓'
  25. button_support = 'Support 💵'
  26. button_tasks = 'Tasks 📔'
  27. button_edit = 'Edit 🖌'
  28. button_move_subtype = 'Move Tasks'
  29. button_show_tasks = 'Show Tasks'
  30. button_characteristics = 'Characteristics 📈'
  31. button_previous = '⬅️'
  32. button_next = '➡️'
  33. button_expired = 'Expired 😴'
  34. button_finished = 'Finished 🏁'
  35. button_processing = 'Process 🕑'
  36. button_change_type = 'Change Type'
  37. button_change_subtype = 'Change Subtype'
  38. button_add_timing = 'Add Timing'
  39. button_return_expired = 'Make as Proccessing'
  40. button_return_finished = 'Repeat Task'
  41. button_return_processing = 'Make as Done'
  42. button_change_tasks_frequency = 'Change Frequency'
  43. button_show_datetime = 'With us From:'
  44. button_show_processing = 'Processing'
  45. button_show_expired = 'Expired'
  46. button_show_finished = 'Finished'
  47. button_morning = "Morning"
  48. button_day = "Day"
  49. button_evening = "Evening"
  50. button_default_task_group = 'Default Tasks Grouping:'
  51. button_default_task_day = 'Default Tasks Datetime Notification:'
  52. button_default_task_show = 'Default Tasks Show:'
  53. button_default_task_frequency = 'Default Task Frequency:'
  54. button_default_add_timing = 'Default Task Add Timing:'
  55. @dataclass
  56. class GroupingTasksMenu:
  57. text_menu = 'Your Menu:'
  58. group_task = 'Group by Tasks'
  59. group_types = 'Group by Types'
  60. group_subtypes = 'Group by Subtypes'
  61. default_types = 'Types as Default'
  62. default_subtypes = 'Subtypes as Default'
  63. default_task = 'Tasks as Default'
  64. default_select_all = 'Select All'
  65. default_back = 'Back from Default'
  66. text_select_unkwown = 'Select Grouping of the Tasks:'
  67. text_group_subtypes = 'Grouped by SubTypes Tasks:'
  68. text_group_types = 'Grouped by Types Tasks:'
  69. text_group_task_by = 'Grouped by Task:'
  70. text_group_task = 'Your Tasks:'
  71. text_show_types_user = 'Your Types:'
  72. text_show_subtypes_user = 'Your SubTypes:'
  73. text_show_setting = 'Your Settings:'
  74. text_show_statistics = 'Your Statistics:'
  75. expired_task_desc_processing = 'Your Proccessing Tasks:'
  76. expired_task_desc_expired = 'Your Expired Tasks:'
  77. expired_task_desc_finished = 'Your Finished Tasks:'
  78. text_change_task_type = 'Change Type of the Task To:'
  79. text_change_task_subtype = 'Change SubType of the Task To:'
  80. text_move_all_type_to_another = 'Move all tasks to another type'
  81. text_move_all_subtype_to_another = 'Move all tasks to another subtype'
  82. text_change_frequency = 'Change Frequency of your Task to:'
  83. text_change_frequency_default = 'Change Default Frequency to:'
  84. text_updated_default_frequency = "We successfully updated values of the default frequency"
  85. text_start = 'Welcome to the Task Organizer Bot.\n' +\
  86. 'Here you can sent every backlog and check them after by the notifications.\n' +\
  87. f'Also,\n - by using {ButtonsInput.button_settings} you can get and set your profile like you want;\n' +\
  88. f'- by using {ButtonsInput.button_characteristics} you can get your own basic statistic values;\n' +\
  89. f'- by using {ButtonsInput.button_tasks}, {ButtonsInput.button_types}, {ButtonsInput.button_subtypes} '+\
  90. 'you can make basic manipulations of you previpously provided messages.\nTry it out and good luck.'
  91. @dataclass
  92. class Callbacks:
  93. callback_empty = '000'
  94. callback_settings = '001'
  95. callback_types = '002'
  96. callback_select_all = '1110'
  97. callback_types_group = '111'
  98. callback_subtypes_group = '112'
  99. callback_task_group = '113'
  100. callback_types_default = '114'
  101. callback_subtypes_default = '115'
  102. callback_task_default = '116'
  103. callback_types_selection = '117'
  104. callback_subtypes_selection = '118'
  105. callback_task_selection = '119'
  106. callback_update_types = '220'
  107. callback_update_subtypes = '221'
  108. callback_update_tasks = '222'
  109. callback_update_tasks_alarm = '223'
  110. callback_update_tasks_types = '224'
  111. callback_update_tasks_subtypes = '225'
  112. callback_update_tasks_frequency = '226'
  113. callback_update_tasks_frequency_next = '227'
  114. callback_info_types = '300'
  115. callback_info_subtypes = '301'
  116. callback_info_tasks = '302'
  117. callback_remove_user_type = '310'
  118. callback_remove_user_subtype = '311'
  119. callback_task_make_done = '320'
  120. callback_task_make_repeat = '321'
  121. callback_task_make_unexpired = '322'
  122. callback_task_change_frequency = '323'
  123. callback_task_add_timing = '324'
  124. callback_task_change_type = '325'
  125. callback_task_change_subtype = '326'
  126. callback_task_new_type = '327'
  127. callback_task_new_subtype = '328'
  128. callback_task_new_type_next = '329'
  129. callback_task_new_subtype_next = '330'
  130. callback_move_task_by_types = '331'
  131. callback_move_task_by_subtypes = '332'
  132. callback_find_move_task_types = '333'
  133. callback_find_move_task_subtypes = '334'
  134. callback_next_move_task_types = '335'
  135. callback_next_move_task_subtypes = '336'
  136. callback_show_tasks_by_types = '400'
  137. callback_show_tasks_by_subtypes = '401'
  138. callback_show_next_types = '500'
  139. callback_show_next_subtypes = '501'
  140. callback_show_next_task = '502'
  141. callback_settings_next = '600'
  142. callback_settings_change_frequency = '601'
  143. callback_settings_new_frequency = '602'
  144. callback_settings_group_default = '603'
  145. callback_settings_group_task = '604'
  146. callback_settings_group_types = '605'
  147. callback_settings_group_subtypes = '606'
  148. callback_settings_change_add_timing = '607'
  149. callback_settings_change_showings = '608'
  150. callback_settings_change_datetime_not = '609'
  151. callback_next_task_group_tasks = '701'
  152. callback_next_task_group_types = '702'
  153. callback_next_task_group_subtypes = '703'
  154. @dataclass
  155. class FilesUsage:
  156. folder_current = os.getcwd()
  157. folder_storage = 'storage'
  158. folder_name_db = 'database.sql'
  159. file_name_json = 'clock.json'
  160. @dataclass
  161. class DataBaseTable:
  162. table_user = 'User'
  163. table_task = 'Task'
  164. table_type = 'Type'
  165. table_subtype = 'SubType'
  166. table_notification = 'Notification'
  167. table_task_type = 'TaskType'
  168. table_task_subtype = 'TaskSubType'
  169. table_task_processing = 'TaskProcessing'
  170. table_task_finished = 'TaskFinished'
  171. table_task_expired = 'TaskExpired'
  172. table_type_subtype = 'TypeSubType'
  173. table_task_notification = 'TaskNotification'
  174. table_subtype_notification = 'SubTypeNotification'
  175. table_type_user = 'TypeUser'
  176. table_subtype_user = 'SubTypeUser'
  177. table_user_settings = 'UserSettings'
  178. @dataclass
  179. class TableUser:
  180. id = 'id'
  181. name_first = 'name_first'
  182. name_last = 'name_last'
  183. username = 'username'
  184. datetime = 'datetime'
  185. @dataclass
  186. class TableTask:
  187. id = 'id'
  188. id_user = 'id_user'
  189. id_user_task = 'id_user_task'
  190. id_message = 'id_message'
  191. datetime_start = 'datetime_start'
  192. datetime_finish = 'datetime_finish'
  193. description_start = 'description_start'
  194. description_finish = 'desription_finish'
  195. alarm_day = 'alarm_day'
  196. alarm_morning = 'alarm_morning'
  197. alarm_evening = 'alarm_evening'
  198. @dataclass
  199. class TableNotification:
  200. id = 'id'
  201. type = 'type'
  202. description = 'description'
  203. notice_day_one = 'notice_day_one'
  204. notice_week_one = 'notice_week_one'
  205. notice_week_two = 'notice_week_two'
  206. notice_week_three = 'notice_week_three'
  207. notice_week_four = 'notice_week_four'
  208. notice_month_one = 'notice_month_one'
  209. @dataclass
  210. class TableType:
  211. id = 'id'
  212. name = 'name'
  213. @dataclass
  214. class TableSubType:
  215. id = 'id'
  216. name = 'name'
  217. @dataclass
  218. class TableTaskProccessing:
  219. id = 'id'
  220. id_user = 'id_user'
  221. datetime = 'datetime_started'
  222. @dataclass
  223. class TableTaskFinished:
  224. id = 'id'
  225. id_user = 'id_user'
  226. datetime = 'datetime_finished'
  227. @dataclass
  228. class TableTaskExpired:
  229. id = 'id'
  230. id_user = 'id_user'
  231. datetime = 'datetime_expired'
  232. @dataclass
  233. class TableTypeSubType:
  234. id_type = 'id_type'
  235. id_subtype = 'id_subtype'
  236. @dataclass
  237. class TableTaskType:
  238. id_task = 'id_task'
  239. id_type = 'id_type'
  240. @dataclass
  241. class TableTaskSubType:
  242. id_task = 'id_task'
  243. id_subtype = 'id_type'
  244. @dataclass
  245. class TableTypeUser:
  246. id_type = 'id_type'
  247. id_user = 'id_user'
  248. @dataclass
  249. class TableSubTypeUser:
  250. id_subtype = 'id_subtype'
  251. id_user = 'id_user'
  252. @dataclass
  253. class TableSubTypeNotification:
  254. id_subtype = 'id_subsystem'
  255. id_notification = 'id_notification'
  256. @dataclass
  257. class TableTaskNotification:
  258. id_task = 'id_task'
  259. id_notification = 'id_notification'
  260. @dataclass
  261. class TelegramCommands:
  262. start = 'start'
  263. menu = 'menu'
  264. help = 'help'
  265. tasks = 'tasks'
  266. types = 'types'
  267. subtypes = 'subtypes'
  268. settings = 'settings'
  269. support = 'support'
  270. add_types = 'add_types'
  271. add_subtypes = 'add_subtypes'
  272. characteristics = 'characteristics'
  273. @dataclass
  274. class TableUserSettings:
  275. id_user = 'id_user'
  276. add_timing = 'add_timing'
  277. show_processing = 'show_processing'
  278. show_expired = 'show_expired'
  279. show_finished = 'show_finished'
  280. default_by_types = 'default_by_types'
  281. default_by_subtypes = 'default_by_subtypes'
  282. default_by_tasks = 'default_by_tasks'
  283. default_frequency = 'default_frequency'
  284. default_change_morning = 'default_change_morning'
  285. default_change_day = 'default_change_day'
  286. default_change_evening = 'default_change_evening'
  287. basic_value_task_type = 7
  288. basic_value_task_subtype = 6
  289. basic_value_task_notification = 1
  290. basic_id_types = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  291. basic_id_subtypes = [1, 2, 3, 4, 5, 6, 7, 8]
  292. basic_id_types_non_rem = [9]
  293. basic_id_subtypes_non_rem = [8]
  294. basic_values_type = [
  295. {
  296. 'id': 1,
  297. 'name': 'Work',
  298. },
  299. {
  300. 'id': 2,
  301. 'name': 'Study',
  302. },
  303. {
  304. 'id': 3,
  305. 'name': 'Sport',
  306. },
  307. {
  308. 'id': 4,
  309. 'name': 'Personal',
  310. },
  311. {
  312. 'id': 5,
  313. 'name': 'Information',
  314. },
  315. {
  316. 'id': 6,
  317. 'name': 'Humour',
  318. },
  319. {
  320. 'id': 7,
  321. 'name': 'Improvement',
  322. },
  323. {
  324. 'id': 8,
  325. 'name': 'Music',
  326. },
  327. {
  328. 'id': 9,
  329. 'name': 'Unknown',
  330. }
  331. ]
  332. basic_values_subtype = [
  333. {
  334. 'id': 1,
  335. 'name': "Document",
  336. },
  337. {
  338. 'id': 2,
  339. "name": "Link",
  340. },
  341. {
  342. 'id': 3,
  343. "name": "Picture",
  344. },
  345. {
  346. 'id': 4,
  347. "name": "Video",
  348. },
  349. {
  350. 'id': 5,
  351. "name": "Audio",
  352. },
  353. {
  354. 'id': 6,
  355. "name": "Text",
  356. },
  357. {
  358. 'id': 7,
  359. "name": "Book",
  360. },
  361. {
  362. 'id': 8,
  363. 'name': 'Unknown',
  364. }
  365. ]
  366. basic_values_notification = [
  367. [
  368. 1,
  369. 'Everyday',
  370. 'Notice user everyday in every cases',
  371. True,
  372. False,
  373. False,
  374. False,
  375. False,
  376. False
  377. ],
  378. [
  379. 2,
  380. 'Every Week',
  381. 'Notice user every week in every cases which could apply',
  382. False,
  383. True,
  384. False,
  385. False,
  386. False,
  387. False
  388. ],
  389. [
  390. 3,
  391. 'Every Two Weeks',
  392. 'Notice user every second week in every cases which could apply',
  393. False,
  394. False,
  395. True,
  396. False,
  397. False,
  398. False
  399. ],
  400. [
  401. 4,
  402. 'Every Three Weeks',
  403. 'Notice user every third week in every cases which could apply',
  404. False,
  405. False,
  406. False,
  407. True,
  408. False,
  409. False
  410. ],
  411. [
  412. 5,
  413. 'Every Four Weeks',
  414. 'Notice user every fourth week in every cases which could apply',
  415. False,
  416. False,
  417. False,
  418. False,
  419. True,
  420. False
  421. ],
  422. [
  423. 6,
  424. 'Every Month',
  425. 'Notice user every month in every cases which could apply',
  426. False,
  427. False,
  428. False,
  429. False,
  430. False,
  431. True
  432. ]
  433. ]
  434. basic_value_task = [
  435. 1,
  436. 'Task which is required to you to get familiar with out bot and get the default values of it',
  437. True,
  438. True,
  439. True
  440. ]
  441. basic_id_frequency = basic_values_notification[0][0]
  442. basic_add_timings = [1, 3, 4, 7, 14, 21]
  443. content_react_basic = [
  444. 'audio',
  445. 'document',
  446. 'photo',
  447. 'sticker',
  448. 'video',
  449. 'video_note',
  450. 'voice',
  451. 'location',
  452. 'contact',
  453. 'pinned_message']