Advertisement
darkor

schedule_bot

Nov 13th, 2019
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.79 KB | None | 0 0
  1. from datetime import datetime
  2. import telebot
  3. import constants
  4. import timetable
  5. import keyboard
  6. from datetime import date
  7. import calendar
  8.  
  9. bot = telebot.TeleBot(constants.test_token)
  10.  
  11. users = {}
  12.  
  13. print(bot.get_me())
  14.  
  15. @bot.message_handler(commands=['start'])
  16. def hundler_start(message):
  17.     if str(message.from_user.id) not in users:
  18.         users[str(message.from_user.id)] = {'name': message.from_user.first_name,
  19.                                             'week': 'auto',
  20.                                             'group': 'none',
  21.                                             'lastMessageId': 0
  22.                                             }
  23.         print(f'New user:\n name: {message.from_user.first_name}, id: {message.from_user.id}')
  24.         print(f'Whole list of users:\n{users}')
  25.  
  26.     bot.send_message(message.chat.id, '''  
  27.    Цей бот створений для групи ЖРН-12С, а зокрема для найгарнішої киці)
  28.    Команди:
  29.        /menu - головне меню
  30.  
  31.    Щоб отримати розклад натисніть на відповіну кнопку на клавіатурі
  32.    (Питання/пропозиції @dark_or)
  33.    ''')
  34.  
  35.  
  36. @bot.message_handler(commands=['main', 'Menu', 'menu'])
  37. def handle_menu(message):
  38.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  39.     user_markup.row('Розклад')
  40.     user_markup.row('Час занять')
  41.     user_markup.row('Налаштування')
  42.     bot.send_message(message.from_user.id, 'Головне меню:', reply_markup=user_markup)
  43.  
  44.  
  45. @bot.message_handler(func=lambda message: 'Розклад' == message.text)
  46. def rozklad(message):
  47.     if users[str(message.chat.id)]['lastMessageId'] != 0:
  48.         bot.delete_message(chat_id=message.chat.id, message_id=users[str(message.chat.id)]['lastMessageId'])
  49.     my_date = date.today()
  50.     today = calendar.day_name[my_date.weekday()]
  51.     if today == 'Saturday' or today == 'Sunday':
  52.         today = 'Friday'
  53.         day = timetable.week_today[today]
  54.         message.text = day
  55.     else:
  56.         day = timetable.week_today[today]
  57.         message.text = day
  58.     hundle_text(message)
  59.     users[str(message.chat.id)]['lastMessageId'] = message.message_id
  60.  
  61.  
  62. @bot.message_handler(func=lambda message: 'Час занять' == message.text)
  63. def lessons_time(message):
  64.     bot.send_message(message.from_user.id,
  65.                      'Час:\nПочаток - закінчення пар:\n1. 8:30 - 9:50\n2. 10:10 - 11:30\n3. 11:50 - 13:10\n4. 13:30 - 14:50')
  66.  
  67.  
  68. @bot.message_handler(func=lambda message: 'Налаштування' == message.text)
  69. def settings(message):
  70.     settings_message = f"""Мої налаштування:
  71.    Тиждень - {timetable.dict_settings[users[str(message.from_user.id)]['week']]}
  72.    Підгрупа - {timetable.dict_settings[users[str(message.from_user.id)]['group']]}
  73.    """
  74.     bot.send_message(message.from_user.id, settings_message, reply_markup=keyboard.settings())
  75.  
  76. @bot.message_handler(content_types=['text'])
  77. def hundle_text(message):
  78.     if str(message.from_user.id) not in users:
  79.         users[str(message.from_user.id)] = {'name': message.from_user.first_name,
  80.                                             'week': 'auto',
  81.                                             'group': 'none',
  82.                                             }
  83.         bot.send_message(message.from_user.id,
  84.                          'На жаль у програмі стався збій...\nВаші налаштування скинуті до заводських:\nТип тижня: АВТОВИБІР\nТип підгрупи: НЕ ВИБРАНО')
  85.         message.text = ' '
  86.  
  87.     if users[str(message.from_user.id)]['week'] == 'auto':
  88.         week_number = int(datetime.now().strftime("%V"))
  89.     elif users[str(message.from_user.id)]['week'] == 'chuselnuk':
  90.         week_number = 2
  91.     elif users[str(message.from_user.id)]['week'] == 'znamennuk':
  92.         week_number = 1
  93.  
  94.     if week_number % 2 == 0:
  95.         # чисельник
  96.         if users[str(message.from_user.id)]['group'] == 'none':
  97.             if message.text in timetable.time_table_chuselnuk_none:
  98.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_none[message.text], reply_markup=keyboard.schedule())
  99.         elif users[str(message.from_user.id)]['group'] == 'subgroup1':
  100.             if message.text in timetable.time_table_chuselnuk_group_1:
  101.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_group_1[message.text], reply_markup=keyboard.schedule())
  102.         elif users[str(message.from_user.id)]['group'] == 'subgroup2':
  103.             if message.text in timetable.time_table_chuselnuk_group_2:
  104.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_group_2[message.text], reply_markup=keyboard.schedule())
  105.  
  106.     if week_number % 2 == 1:
  107.         # знаменник
  108.         if users[str(message.from_user.id)]['group'] == 'none':
  109.             if message.text in timetable.time_table_znamennuk_none:
  110.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_none[message.text], reply_markup=keyboard.schedule())
  111.         elif users[str(message.from_user.id)]['group'] == 'subgroup1':
  112.             if message.text in timetable.time_table_znamennuk_group_1:
  113.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_group_1[message.text], reply_markup=keyboard.schedule())
  114.         elif users[str(message.from_user.id)]['group'] == 'subgroup2':
  115.             if message.text in timetable.time_table_znamennuk_group_2:
  116.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_group_2[message.text], reply_markup=keyboard.schedule())
  117.  
  118.     if str(message.from_user.id) == constants.id_martu:
  119.         bot.send_message(message.chat.id, 'Хорошого дня, сонечко)')
  120.  
  121.     print(users)
  122.  
  123.  
  124. @bot.callback_query_handler(func=lambda call: 'week' in call.data)
  125. def data_handler(call):
  126.     if users[str(call.message.chat.id)]['week'] == 'auto':
  127.         week_number = int(datetime.now().strftime("%V"))
  128.     elif users[str(call.message.chat.id)]['week'] == 'chuselnuk':
  129.         week_number = 2
  130.     elif users[str(call.message.chat.id)]['week'] == 'znamennuk':
  131.         week_number = 1
  132.     #bot.delete_message(call.message.chat.id, call.message.message_id)
  133.     day = call.data.split('_')
  134.     week_day = day[1]
  135.     week_day = timetable.week_today[week_day]
  136.  
  137.     if week_number % 2 == 0:
  138.         # чисельник
  139.         if users[str(call.message.chat.id)]['group'] == 'none':
  140.             if week_day in timetable.time_table_chuselnuk_none:
  141.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_chuselnuk_none[week_day], reply_markup=keyboard.schedule())
  142.         elif users[str(call.message.chat.id)]['group'] == 'subgroup1':
  143.             if week_day in timetable.time_table_chuselnuk_group_1:
  144.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_chuselnuk_group_1[week_day], reply_markup=keyboard.schedule())
  145.         elif users[str(call.message.chat.id)]['group'] == 'subgroup2':
  146.             if week_day in timetable.time_table_chuselnuk_group_2:
  147.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_chuselnuk_group_2[week_day], reply_markup=keyboard.schedule())
  148.  
  149.     if week_number % 2 == 1:
  150.         # знаменник
  151.         if users[str(call.message.chat.id)]['group'] == 'none':
  152.             if week_day in timetable.time_table_znamennuk_none:
  153.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_znamennuk_none[week_day], reply_markup=keyboard.schedule())
  154.         elif users[str(call.message.chat.id)]['group'] == 'subgroup1':
  155.             if week_day in timetable.time_table_znamennuk_group_1:
  156.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_znamennuk_group_1[week_day], reply_markup=keyboard.schedule())
  157.         elif users[str(call.message.chat.id)]['group'] == 'subgroup2':
  158.             if week_day in timetable.time_table_znamennuk_group_2:
  159.                 bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=timetable.time_table_znamennuk_group_2[week_day], reply_markup=keyboard.schedule())
  160.  
  161. @bot.callback_query_handler(func=lambda call: 'wtype' in call.data)
  162. def settings_week_hundler(call):
  163.     but_week = call.data.split('_')
  164.     type_of_week = but_week[1]
  165.     users[str(call.message.chat.id)]['week'] = type_of_week
  166.     settings_message = f"""Мої налаштування:
  167.    Тиждень - {timetable.dict_settings[users[str(call.message.chat.id)]['week']]}
  168.    Підгрупа - {timetable.dict_settings[users[str(call.message.chat.id)]['group']]}"""
  169.     bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=settings_message, reply_markup=keyboard.settings())
  170.  
  171.  
  172. @bot.callback_query_handler(func=lambda call: 'gtype' in call.data)
  173. def settings_group_hundler(call):
  174.     but_group = call.data.split('_')
  175.     type_of_group = but_group[1]
  176.     users[str(call.message.chat.id)]['group'] = type_of_group
  177.     settings_message = f"""Мої налаштування:
  178.    Тиждень - {timetable.dict_settings[users[str(call.message.chat.id)]['week']]}
  179.    Підгрупа - {timetable.dict_settings[users[str(call.message.chat.id)]['group']]}"""
  180.     bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=settings_message, reply_markup=keyboard.settings())
  181.  
  182. bot.polling(none_stop=True, interval=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement