Advertisement
Guest User

Untitled

a guest
Dec 18th, 2020
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.82 KB | None | 0 0
  1. import sqlite3
  2.  
  3. from aiogram import Bot, types
  4. from aiogram.contrib.fsm_storage.memory import MemoryStorage
  5. from aiogram.dispatcher import Dispatcher, FSMContext
  6. from aiogram.dispatcher.filters import Text
  7. from aiogram.types import CallbackQuery
  8. from aiogram.utils import executor
  9.  
  10. from Databases.sqlite import Database
  11. from config import TOKEN
  12. from keyboards import menu_1, menu_2, menu_3, menu_4, il_1, il_2, il_3, il_4
  13. from raspisanie import data
  14.  
  15. bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML)
  16. dp = Dispatcher(bot, storage=MemoryStorage())
  17. db = Database()
  18.  
  19.  
  20. @dp.message_handler(commands=['start'])
  21. async def process_start_command(message: types.Message, state: FSMContext):
  22. try:
  23. db.create_table_users()
  24. except Exception as e:
  25. print(e)
  26. print(db.select_all_users())
  27. await message.answer('🤖<b>BSUT Helper</b>🤖'
  28. f'\n{message.from_user.first_name} добро пожаловать!'
  29. '\n⬇️Для управления ботом⬇️'
  30. '\n⬇️Воспользуйтесь меню ⬇️')
  31. await message.answer('Найдите свою группу:', reply_markup=menu_4)
  32. name = message.from_user.full_name
  33. try:
  34. db.add_user(id=message.from_user.id, name=name)
  35. except sqlite3.IntegrityError as err:
  36. print(err)
  37. count_users = db.count_users()[0]
  38. await message.answer(f'В базе {count_users} пользователей')
  39. await state.set_state('grup')
  40.  
  41.  
  42. # Список групп
  43. @dp.inline_handler()
  44. async def empty_query(query: types.InlineQuery):
  45. grup = [types.InlineQueryResultArticle(
  46. id=d[0], title=d[1], description=d[2],
  47. input_message_content=types.InputTextMessageContent(message_text=d[3])
  48. ) for d in data]
  49. await query.answer(results=grup)
  50.  
  51.  
  52. @dp.message_handler(state='grup')
  53. async def enter_group(message: types.Message, state: FSMContext):
  54. grup = message.text
  55. db.update_group(grup=grup, id=message.from_user.id)
  56. user = db.select_user(id=message.from_user.id)
  57. await message.answer(f'Выбранна группа <b>{grup}</b>', reply_markup=menu_1)
  58. await state.finish()
  59.  
  60.  
  61. @dp.message_handler(text='ПН')
  62. async def send_text(message: types.Message):
  63. connect = sqlite3.connect('main.db')
  64. cursor = connect.cursor()
  65. cursor.execute('SELECT grup FROM Users WHERE id = ?', (message.from_user.id,))
  66. result = cursor.fetchone()
  67. if result is None:
  68. print('none')
  69. for row in result:
  70. if row == 'СВ-31':
  71. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__PN_n'")
  72. row = cursor.fetchone()
  73. await message.answer(row[0], reply_markup=il_1)
  74. elif row == 'СП-31':
  75. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SP_31__PN_n'")
  76. row = cursor.fetchone()
  77. await message.answer(row[0], reply_markup=il_1)
  78. elif row == 'СА-31':
  79. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SA_31__PN_n'")
  80. row = cursor.fetchone()
  81. await message.answer(row[0], reply_markup=il_1)
  82.  
  83. connect.close()
  84.  
  85.  
  86. @dp.message_handler(text='ВТ')
  87. async def send_text(message: types.Message):
  88. connect = sqlite3.connect('main.db')
  89. cursor = connect.cursor()
  90. cursor.execute('SELECT grup FROM Users WHERE id = ?', (message.from_user.id,))
  91. result = cursor.fetchone()
  92. if result is None:
  93. print('none')
  94. for row in result:
  95. if row == 'СВ-31':
  96. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__VT_n'")
  97. row = cursor.fetchone()
  98. await message.answer(row[0], reply_markup=il_3)
  99. elif row == 'СП-31':
  100. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SP_31__VT_n'")
  101. row = cursor.fetchone()
  102. await message.answer(row[0], reply_markup=il_3)
  103. elif row == 'СА-31':
  104. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SA_31__VT_n'")
  105. row = cursor.fetchone()
  106. await message.answer(row[0], reply_markup=il_3)
  107.  
  108. connect.close()
  109.  
  110.  
  111. @dp.callback_query_handler(text='PN_p')
  112. async def answer(call: CallbackQuery):
  113. connect = sqlite3.connect('main.db')
  114. cursor = connect.cursor()
  115. cursor.execute('SELECT grup FROM Users WHERE id = ?', (call.from_user.id,))
  116. result = cursor.fetchone()
  117. if result is None:
  118. print('none')
  119. for row in result:
  120. if row == 'СВ-31':
  121. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__PN_p'")
  122. row = cursor.fetchone()
  123. await call.message.answer(row[0], reply_markup=il_2)
  124.  
  125.  
  126. @dp.callback_query_handler(text='PN_n')
  127. async def answer(call: CallbackQuery):
  128. connect = sqlite3.connect('main.db')
  129. cursor = connect.cursor()
  130. cursor.execute('SELECT grup FROM Users WHERE id = ?', (call.from_user.id,))
  131. result = cursor.fetchone()
  132. if result is None:
  133. print('none')
  134. for row in result:
  135. if row == 'СВ-31':
  136. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__PN_n'")
  137. row = cursor.fetchone()
  138. await call.message.answer(row[0], reply_markup=il_1)
  139.  
  140.  
  141. @dp.callback_query_handler(text='VT_p')
  142. async def answer(call: CallbackQuery):
  143. connect = sqlite3.connect('main.db')
  144. cursor = connect.cursor()
  145. cursor.execute('SELECT grup FROM Users WHERE id = ?', (call.from_user.id,))
  146. result = cursor.fetchone()
  147. if result is None:
  148. print('none')
  149. for row in result:
  150. if row == 'СВ-31':
  151. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__VT_p'")
  152. row = cursor.fetchone()
  153. await call.message.answer(row[0], reply_markup=il_4)
  154.  
  155.  
  156. @dp.callback_query_handler(text='VT_n')
  157. async def answer(call: CallbackQuery):
  158. connect = sqlite3.connect('main.db')
  159. cursor = connect.cursor()
  160. cursor.execute('SELECT grup FROM Users WHERE id = ?', (call.from_user.id,))
  161. result = cursor.fetchone()
  162. if result is None:
  163. print('none')
  164. for row in result:
  165. if row == 'СВ-31':
  166. cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = 'SV_31__VT_n'")
  167. row = cursor.fetchone()
  168. await call.message.answer(row[0], reply_markup=il_3)
  169.  
  170.  
  171. @dp.message_handler(Text(
  172. equals=['Расписание 🗓', 'Программы 💾', 'О проекте 📌', '⬅Назад', 'Тех. Поддержка 🛠', 'Поддержать проект 💰']))
  173. async def menu1(message: types.Message):
  174. if message.text == 'Расписание 🗓':
  175. await message.answer('<b>Нету вашего расписания😱 ?</b> \nОбратитесь в <i>тех. поддержку</i>',
  176. reply_markup=menu_3)
  177. elif message.text == 'Программы 💾':
  178. await message.answer(' 💾<b>Полезные программы</b>💾 '
  179. '\n\n1⃣ <a href="https://goo.su/34MY">Microsoft Office 2016-2019</a>'
  180. '\n\n2⃣ <a href="https://goo.su/34MZ">Autodesk AutoCAD 2021</a>'
  181. '\n\n3⃣ <a href="https://goo.su/34N1">Autodesk Revit 2019</a>'
  182. '\n\n4⃣ <a href="https://goo.su/352o">Mathcad 14.0 M020</a>')
  183. elif message.text == 'О проекте 📌':
  184. await message.answer('<b>BSUT Helper v1.0</b>'
  185. '\nПоследнее обновление: <i>20.11.2020</i>'
  186. '\n<i>+ Визуальные улучшения расписания</i>'
  187. '\n<i>+ Оптимизация кода бота</i>'
  188. '\n<i>+ Cоздана база данных</i>'
  189. '\nДата выхода: <i>18.11.2020</i>'
  190. '\nРазработчик <i>@mikitos59</i>'
  191. '\nРедактор <i>@Stoxly</i>', reply_markup=menu_2)
  192. elif message.text == '⬅Назад':
  193. await message.answer('Вы вышли в главное меню', reply_markup=menu_1)
  194. elif message.text == 'Тех. Поддержка 🛠':
  195. await message.answer('По всем вопросам вопросам обращаться к <i>@mikitos59</i>')
  196. elif message.text == 'Поддержать проект 💰':
  197. await message.answer('Скоро')
  198.  
  199.  
  200. @dp.message_handler()
  201. async def echo_message(message: types.Message):
  202. await message.answer('Я не знаю что ответить😰')
  203.  
  204.  
  205. if __name__ == '__main__':
  206. executor.start_polling(dp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement