Advertisement
darkor

telegram_bot

Oct 16th, 2019
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.15 KB | None | 0 0
  1. from datetime import datetime
  2. import telebot
  3. import constants
  4. import timetable
  5.  
  6. bot = telebot.TeleBot(constants.test_token)
  7.  
  8. users = {}
  9.  
  10. print(bot.get_me())
  11.  
  12.  
  13. def log(message, answer):
  14.     print('\n -------------------------------------')
  15.     print(datetime.now())
  16.     print('Повідомлення від {0} {1}. (id = {2}) \n Текст - {3}'.format(message.from_user.first_name,
  17.                                                                        message.from_user.last_name,
  18.                                                                        str(message.from_user.id),
  19.                                                                        message.text))
  20.     print(answer)
  21.  
  22.  
  23. @bot.message_handler(commands=['start'])
  24. def hundle_start(message):
  25.     if str(message.from_user.id) not in users:
  26.         users[str(message.from_user.id)] = {'name': message.from_user.first_name,
  27.                                             'week': 'auto',
  28.                                             'group': 'none',
  29.                                             }
  30.         print(f'New user:\n name: {message.from_user.first_name}, id: {message.from_user.id}')
  31.         print(f'Whole list of users:\n{users}')
  32.  
  33.     bot.send_message(message.chat.id, '''  
  34.    Цей бот створений для групи ЖРН-12С, а зокрема для найгарнішої киці)
  35.    Команди:
  36.        /Menu - головне меню
  37.  
  38.    Щоб отримати розклад натисніть на відповіну кнопку на клавіатурі
  39.    (Питання/пропозиції @dark_or)
  40.    ''')
  41.  
  42.  
  43. @bot.message_handler(commands=['main', 'Меню', 'Menu', 'menu'])
  44. def handle_main(message):
  45.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  46.     user_markup.row('/Timetable')
  47.     user_markup.row('/Time')
  48.     user_markup.row('/Settings')
  49.     bot.send_message(message.from_user.id, 'Головне меню:', reply_markup=user_markup)
  50.  
  51.  
  52. @bot.message_handler(commands=['Time'])
  53. def handle_time(message):
  54.     bot.send_message(message.from_user.id,
  55.                      'Час:\nПочаток - закінчення пар:\n1. 8:30 - 9:50\n2. 10:10 - 11:30\n3. 11:50 - 13:10\n4. 13:30 - 14:50')
  56.  
  57.  
  58. @bot.message_handler(commands=['Timetable'])
  59. def hundle_keyboard(message):
  60.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  61.     user_markup.row('Понеділок', 'Вівторок', 'Середа')
  62.     user_markup.row('Четвер', "П'ятниця", '/Menu')
  63.     bot.send_message(message.from_user.id, 'Виберіть день тижня, або поверніться у меню', reply_markup=user_markup)
  64.  
  65.  
  66. @bot.message_handler(commands=['Налаштування', 'Settings'])
  67. def hundle_settings(message):
  68.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  69.     user_markup.row('/Subgroup_type')
  70.     user_markup.row('/Week_type')
  71.     user_markup.row('/Menu')
  72.     bot.send_message(message.from_user.id, 'Налаштування:', reply_markup=user_markup)
  73.  
  74.  
  75. @bot.message_handler(commands=['Subgroup_type'])
  76. def hundle_group(message):
  77.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  78.     user_markup.row('/none')
  79.     user_markup.row('/Підгрупа_1', '/Підгрупа_2')
  80.     user_markup.row('/Settings', '/Menu')
  81.     bot.send_message(message.from_user.id, 'Виберіть підгрупу:', reply_markup=user_markup)
  82.  
  83.  
  84. @bot.message_handler(commands=['Week_type'])
  85. def hundle_week(message):
  86.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  87.     user_markup.row('/auto')
  88.     user_markup.row('/чисельник', '/знаменник')
  89.     user_markup.row('/Settings', '/Menu')
  90.     bot.send_message(message.from_user.id, 'Виберіть тип тижня:', reply_markup=user_markup)
  91.  
  92.  
  93. @bot.message_handler(commands=['auto'])
  94. def hundle_week_auto(message):
  95.     users[str(message.from_user.id)]['week'] = 'auto'
  96.     bot.send_message(message.from_user.id, 'Type of week was changed successfully!')
  97.  
  98.  
  99. @bot.message_handler(commands=['чисельник'])
  100. def hundle_week_chuselnuk(message):
  101.     users[str(message.from_user.id)]['week'] = 'чисельник'
  102.     bot.send_message(message.from_user.id, 'Type of week was changed successfully!')
  103.  
  104.  
  105. @bot.message_handler(commands=['знаменник'])
  106. def hundle_week_chuselnuk(message):
  107.     users[str(message.from_user.id)]['week'] = 'знаменник'
  108.     bot.send_message(message.from_user.id, 'Type of week was changed successfully!')
  109.  
  110.  
  111. @bot.message_handler(commands=['none'])
  112. def hundle_group_group1(message):
  113.     users[str(message.from_user.id)]['group'] = 'none'
  114.     bot.send_message(message.from_user.id, 'Type of group was changed successfully!')
  115.  
  116.  
  117. @bot.message_handler(commands=['Підгрупа_1'])
  118. def hundle_group_group1(message):
  119.     users[str(message.from_user.id)]['group'] = 'підгрупа_1'
  120.     bot.send_message(message.from_user.id, 'Type of group was changed successfully!')
  121.  
  122.  
  123. @bot.message_handler(commands=['Підгрупа_2'])
  124. def hundle_group_group2(message):
  125.     users[str(message.from_user.id)]['group'] = 'підгрупа_2'
  126.     bot.send_message(message.from_user.id, 'Type of group was changed successfully!')
  127.  
  128.  
  129. @bot.message_handler(content_types=['text'])
  130. def hundle_text(message):
  131.     if users[str(message.from_user.id)]['week'] == 'auto':
  132.         week_number = int(datetime.now().strftime("%V"))
  133.  
  134.     elif users[str(message.from_user.id)]['week'] == 'чисельник':
  135.         week_number = 2
  136.  
  137.     elif users[str(message.from_user.id)]['week'] == 'знаменник':
  138.         week_number = 1
  139.  
  140.     if week_number % 2 == 0:
  141.         # чисельник
  142.         if users[str(message.from_user.id)]['group'] == 'none':
  143.             if message.text in timetable.time_table_chuselnuk_none:
  144.                 answer = timetable.time_table_chuselnuk_none[message.text]
  145.                 log(message, answer)
  146.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_none[message.text])
  147.         elif users[str(message.from_user.id)]['group'] == 'підгрупа_1':
  148.             if message.text in timetable.time_table_chuselnuk_group_1:
  149.                 answer = timetable.time_table_chuselnuk_group_1[message.text]
  150.                 log(message, answer)
  151.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_group_1[message.text])
  152.         elif users[str(message.from_user.id)]['group'] == 'підгрупа_2':
  153.             if message.text in timetable.time_table_chuselnuk_group_2:
  154.                 answer = timetable.time_table_chuselnuk_group_2[message.text]
  155.                 log(message, answer)
  156.                 bot.send_message(message.chat.id, timetable.time_table_chuselnuk_group_2[message.text])
  157.  
  158.     if week_number % 2 == 1:
  159.         # знаменник
  160.         if users[str(message.from_user.id)]['group'] == 'none':
  161.             if message.text in timetable.time_table_znamennuk_none:
  162.                 answer = timetable.time_table_znamennuk_none[message.text]
  163.                 log(message, answer)
  164.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_none[message.text])
  165.         elif users[str(message.from_user.id)]['group'] == 'підгрупа_1':
  166.             if message.text in timetable.time_table_znamennuk_group_1:
  167.                 answer = timetable.time_table_znamennuk_group_1[message.text]
  168.                 log(message, answer)
  169.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_group_1[message.text])
  170.         elif users[str(message.from_user.id)]['group'] == 'підгрупа_2':
  171.             if message.text in timetable.time_table_znamennuk_group_2:
  172.                 answer = timetable.time_table_znamennuk_group_2[message.text]
  173.                 log(message, answer)
  174.                 bot.send_message(message.chat.id, timetable.time_table_znamennuk_group_2[message.text])
  175.  
  176.     if str(message.from_user.id) == constants.id_martu:
  177.         answer = 'Ти вибрана, кицю) '
  178.         bot.send_message(message.chat.id, 'Ти вибрана, кицю)')
  179.         log(message, answer)
  180.  
  181.     print(users)
  182.  
  183.  
  184. bot.polling(none_stop=True, interval=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement