Example #1
0
def createTasksDoneMarkup(call, tasks):
    """
    Функция для генерации инлайн клавиатуры с
    Кнопками задач и кнопкой выполнено!

    Parameters
    ----------
    call
        Объект call
    tasks
        задания
    """
    tasksItems = []
    #tasks.sort(key=itemgetter('taskPrior'))
    for number, task in enumerate(tasks, 1):
        item = types.InlineKeyboardButton(f"{number}. {task['description']}",
                                          callback_data=f"EditTaskID={number}")
        tasksItems.append(item)
    doneButton = types.InlineKeyboardButton(config.doneLabel,
                                            callback_data='tasksEditDone')
    markup = types.InlineKeyboardMarkup(row_width=2)
    markup.add(*tasksItems)
    markup.row(doneButton)
    bot.edit_message_text(chat_id=call.message.chat.id,
                          message_id=call.message.message_id,
                          text=config.deleteTaskMessage,
                          reply_markup=markup)
Example #2
0
def showEmptyTimetable(chatId, messageId, date):
    """
    Просмотр пустого расписание.

    Parameters
    ----------
    chatId
        id чата.
    messageId
        id сообщения.
    date
        дата дд.мм.гггг
    """
    databaseHelper.save(chatId, 'date', date)

    markup = telebot.types.InlineKeyboardMarkup(row_width=2)
    buttonTimetableCreator = telebot.types.InlineKeyboardButton(
        'Создать расписание', callback_data='new')
    buttonPattern = telebot.types.InlineKeyboardButton('Применить шаблон',
                                                       callback_data='pattern')
    markup.row(buttonTimetableCreator)
    markup.row(buttonPattern)
    bot.edit_message_text(chat_id=chatId,
                          message_id=messageId,
                          text='Расписание отсутствует',
                          reply_markup=markup)
Example #3
0
def redacting_profile(call):
    if call.data[-1] == '1':
        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text='Введите новое имя')
        SetState(call.from_user.id, 41, cursor, db)
    elif call.data[-1] == '2':
        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text='Введите новый телефон')
        SetState(call.from_user.id, 42, cursor, db)
    elif call.data[-1] == '3':
        bot.edit_message_text(
            chat_id=call.message.chat.id,
            message_id=call.message.message_id,
            text='Введите новый электронный адрес Google-аккаунта')
        SetState(call.from_user.id, 43, cursor, db)
    elif call.data[-1] == '4':
        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text='Загрузите новое фото')
        SetState(call.from_user.id, 44, cursor, db)
    elif call.data[-1] == '6':
        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text='Введите новый адрес кошелька')
        SetState(call.from_user.id, 45, cursor, db)
    elif call.data[-1] == '5':
        bot.delete_message(chat_id=call.message.chat.id,
                           message_id=call.message.message_id)
        bot.send_message(call.message.chat.id,
                         'Редактирование окончено',
                         reply_markup=get_keyboard(call.from_user.id))
        SetState(call.from_user.id, 6, cursor, db)
Example #4
0
def editing11(call):
    if call.data[-1] == '%':
        keyboard = telebot.types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        new_project = "Создать новый проект"
        edit_project = "Редактировать проект"
        list_project = "Список проектов"
        exit = "Назад"
        flag = True
        if isRang(GetRangs(call.from_user.id, cursor), [7, 9, 10]):
            keyboard.add(new_project)
            keyboard.add(edit_project)
            flag = False
        if IsUserTeamlead(call.from_user.id, cursor) and flag:
            keyboard.add(edit_project)
        keyboard.add(list_project)
        keyboard.add(exit)
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        bot.send_message(call.message.chat.id, 'Вкладка <b>"Проекты"</b>', reply_markup=keyboard, parse_mode='HTML')
    else:
        nick_and_id = call.data[7:]
        words = nick_and_id.split('*')
        nick = words[0]
        id = words[1]
        DeleteUserFromProject(nick, id, cursor, db)
        members = GetMembersOfProject(id, cursor)
        keyboard = telebot.types.InlineKeyboardMarkup()
        for member in members:
            keyboard.add(
                telebot.types.InlineKeyboardButton(text=member[0], callback_data='delete_' + member[0] + '*' + str(id)))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Закончить', callback_data='delete_%'))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Выберите курсанта из списка участников', reply_markup=keyboard)
Example #5
0
def createEventsDoneMarkup(call, events):
    """
    Функция для генерации инлайн клавиатуры с
    Кнопками задач и кнопкой выполнено!

    Parameters
    ----------
    call
        Объект call.
    events
        Объект событий
    """
    eventsItems = []
    for number, event in enumerate(events, 1):
        item = types.InlineKeyboardButton(f"{number}. {event['eventsName']}",
                                          callback_data=f"DeleventID={number}")
        eventsItems.append(item)
    doneButton = types.InlineKeyboardButton(config.doneLabel,
                                            callback_data='eventsEditDone')
    markup = types.InlineKeyboardMarkup(row_width=2)
    markup.add(*eventsItems, doneButton)
    bot.edit_message_text(chat_id=call.message.chat.id,
                          message_id=call.message.message_id,
                          text=config.deleteTaskMessage,
                          reply_markup=markup)
Example #6
0
def show_total(user_id, msg_id, chat_id):
    lens = db.get_lines_len_by_id(user_id)
    nmonth_salary = lens[0] * 2000 + lens[1] * 1000 + lens[2] * 500
    month_salary = db.get_salary(user_id)
    bot.edit_message_text(chat_id=chat_id,
                          message_id=msg_id,
                          text=msgs.total.format(month_salary, nmonth_salary),
                          reply_markup=get_referal_markup(
                              lens[0], lens[1], lens[2]))
Example #7
0
def editing3(call):
    role = call.data.split('_')[1]
    member = call.data.split('_')[2]
    project = call.data.split('_')[3]
    AddToProject(project, member, role, cursor, db)
    bot.send_message(GetChatId(member, cursor),
                     GetName(call.from_user.id, cursor) + ' добавил вас в проект "' +
                     GetProjectTitle(GetCurrProject(call.from_user.id, cursor), cursor) + '"')
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Принято")
Example #8
0
def decode(m):
    bot.delete_message(m.chat.id, m.message_id)
    a = bot.send_message(m.chat.id, "***")
    try:
        message = m.text[7:]
        encode_message = message.encode("UTF-8")
        decode = base64.b64decode(encode_message)
        bot.edit_message_text(chat_id=m.chat.id,
                              text=decode,
                              message_id=a.message_id)
    except (Exception, apihelper.ApiTelegramException) as e:
        logfile(m, "Злоупотребление base командами").time()
        Error(m, bot).error()
Example #9
0
def show_line(user_id, chat_id, msg_id, line, line_n, rub):
    lens = db.get_lines_len_by_id(user_id)
    msg = msgs.rline.format(line_n, rub) + '\n'
    if line:
        for user_id in line:
            user_id = user_id[0]
            msg += msgs.referal.format(
                db.get_name_by_id(user_id), db.get_phone_by_id(user_id),
                bot_time.get_reg_date(db.get_registred_time(user_id))) + '\n'
        bot.edit_message_text(chat_id=chat_id,
                              message_id=msg_id,
                              text=msg,
                              reply_markup=get_referal_markup(
                                  lens[0], lens[1], lens[2]))
Example #10
0
def showTimetable(chatId, messageId, timetables, date, variant=0):
    """
    Просмотр расписание.

    Parameters
    ----------
    chatId
        id чата.
    messageId
        id сообщения.
    date
        дата дд.мм.гггг
    timetables
        Объект timetable
    variant
        Вариант работы функции
    """
    timetable = ishas(timetables, date)

    markup = telebot.types.InlineKeyboardMarkup(row_width=2)

    for i in range(len(timetable[1])):
        row = []
        time = timetable[1][i]
        subject = str(timetable[2][i])
        row.append(
            telebot.types.InlineKeyboardButton(
                time, callback_data=createCallbackData('time', el=time)))
        row.append(
            telebot.types.InlineKeyboardButton(
                subject,
                callback_data=createCallbackData('subject', el=subject)))
        markup.add(*row)

    markup.row(
        telebot.types.InlineKeyboardButton('Добавить', callback_data='add'))

    if variant == 0:
        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text=date,
                              reply_markup=markup)
    elif variant == 1:
        bot.send_message(chat_id=chatId, text=date, reply_markup=markup)

    databaseHelper.save(chatId, 'date', date)
Example #11
0
def edit_project(call):
    id = call.data[13:]
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Доступные для редактирования проекты")
    info = GetProjectInfo(id, cursor)
    bot.send_message(call.message.chat.id, info, parse_mode='HTML')
    keyboard = telebot.types.InlineKeyboardMarkup()
    keyboard.add(
        telebot.types.InlineKeyboardButton(text='Добавить участника', callback_data='editing_project_1' + str(id)))
    keyboard.add(
        telebot.types.InlineKeyboardButton(text='Удалить участника', callback_data='editing_project_2' + str(id)))
    keyboard.add(
        telebot.types.InlineKeyboardButton(text='Изменить статус проекта', callback_data='editing_project_3' + str(id)))
    keyboard.add(
        telebot.types.InlineKeyboardButton(text='Пригласить экспертов', callback_data='editing_project_5' + str(id)))
    keyboard.add(telebot.types.InlineKeyboardButton(text='Выход', callback_data='editing_project_4' + str(id)))
    bot.send_message(call.message.chat.id, 'Что вы хотите сделать?', reply_markup=keyboard)
Example #12
0
def new_project3(call):
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Выберите тип проекта:")
    num = call.data[-1]
    project_info['type'] = num
    # experts.append(call.from_user.id)
    users = GetListOfUsers(cursor)
    experts = list()
    for user in users:
        if isRang(GetRangs(user[0], cursor), [10]):
            experts.append(user)
    if len(experts):
        keyboard = telebot.types.InlineKeyboardMarkup()
        for expert in experts:
            keyboard.add(telebot.types.InlineKeyboardButton(text=GetName(expert[0], cursor),
                                                            callback_data='chooseexpert_' + str(expert[0])))
        keyboard.add(telebot.types.InlineKeyboardButton(text='<Закончить>', callback_data='chooseexpert_finish'))
        bot.send_message(call.message.chat.id,
                         'Выберите экспертов',
                         # 'Так как вы инициировали проект, вы являетесь его главным экспертом.Если вы хотите добавить еще экспертов, введите их никнеймы, каждый отдельным сообщением. Для завершения нажмите на кнопку.',
                         reply_markup=keyboard)
    else:
        bot.send_message(call.message.chat.id,
                         'В данное время нет свободных экспертов')
        project_info['experts'] = []
        SetState(call.from_user.id, 6, cursor, db)
        CreateProject(project_info, cursor, db)
        keyboard = telebot.types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        new_project = "Создать новый проект"
        edit_project = "Редактировать проект"
        list_project = "Список проектов"
        exit = "Назад"
        flag = True
        if isRang(GetRangs(call.from_user.id, cursor), [7, 9, 10]):
            keyboard.add(new_project)
            keyboard.add(edit_project)
            flag = False
        if (IsUserTeamlead(call.from_user.id, cursor) and flag):
            keyboard.add(edit_project)
        keyboard.add(list_project)
        keyboard.add(exit)
        bot.send_message(call.message.chat.id,
                         'Проект "' + project_info['name'] + '" успешно создан. Выберите дальнейшее действие',
                         reply_markup=keyboard)
Example #13
0
def showEmptyPattern(chatId, messageId):
    """
    Просмотр пустого шаблона.

    Parameters
    ----------
    chatId
        id чата.
    messageId
        id сообщения.
    """
    markup = telebot.types.InlineKeyboardMarkup(row_width=2)
    buttonPatternCreator = telebot.types.InlineKeyboardButton(
        'Создать шаблон', callback_data='addPattern')
    markup.row(buttonPatternCreator)
    bot.edit_message_text(chat_id=chatId,
                          message_id=messageId,
                          text='Шаблоны отсутствуют',
                          reply_markup=markup)
Example #14
0
def callbackInline(call):
  """Function to control inline buttonsm won't be used anywhere, just in the decorator"""

  if call.message:
    chatID = call.message.chat.id

    if call.data == 'toClearTrue':
      markup = types.InlineKeyboardMarkup(row_width = 1)
      keyboardItem1 = types.InlineKeyboardButton(call.replies.skeyboard[1], callback_data = 'deleteMessage')
      markup.add(keyboardItem1)

      bot.delete_message(chatID, call.message.message_id - 1)
      bot.edit_message_text(call.message.text, chatID, call.message.message_id, reply_markup = markup)

      # * Cleaning the chat Document
      currentChat = Chats.getChat(call.additionalInfo)
      currentChat.words = []
      currentChat.sentMessages = currentChat.sentWords = 0
      currentChat.topWord = Word(text='', sentTimes=0)
      currentChat.save()

      bot.send_message(chatID, call.replies.sclrd)

    if call.data == 'deleteMessage':
      bot.answer_callback_query(call.id, show_alert=False, text=call.replies.notf[0])
      bot.delete_message(chatID, call.message.message_id)
    if call.data == 'deleteWithCommand':
      bot.answer_callback_query(call.id, show_alert=False, text=call.replies.notf[1])
      bot.delete_message(chatID, call.message.message_id)
      bot.delete_message(chatID, call.additionalInfo)

    # * Handles changing language settings
    if call.data == 'setLangRu':
      Language(chatID).lang = (call, 'ru')

    if call.data == 'setLangEng':
      Language(chatID).lang = (call, 'eng')

    if call.data == 'setLangEng' or call.data == 'setLangRu':
      call.replies = Language(chatID).strs
      bot.answer_callback_query(call.id, show_alert = False, text = call.replies.sectl[1])
      bot.delete_message(chatID, call.message.message_id)
Example #15
0
    def print_battle(self):
        global battlemap, st

        keyboard = telebot.types.InlineKeyboardMarkup()
        s = 1
        while s < 8:
            tab = []
            for key, value in battlemap.items():
                x = int(key.split("-")[0])
                if x == s:
                    tab.append(types.InlineKeyboardButton(text=self.dat_pos(value), callback_data='battle_'+key))
            s += 1
            keyboard.row(*tab)
        keyboard.row(types.InlineKeyboardButton(text="Ходить", callback_data='battle_go'))
        if st == 0:
            bot.edit_message_text(text="Ходите", chat_id=self.id, message_id=self.message_id,
                                  reply_markup=keyboard)
        else:
            pprint("22")
            bot.send_message(text="Battle", chat_id=765333440, reply_markup=keyboard)
Example #16
0
def showField(chat_id, message_id=0, var=0):
    field = databaseHelper.get(chat_id, 'field')
    markup = types.InlineKeyboardMarkup(row_width=3)
    row = []
    for i in range(3):
        for j in range(3):
            row.append(
                telebot.types.InlineKeyboardButton(
                    field[i][j],
                    callback_data='btn_click' + ';' + str(i) + ';' + str(j) +
                    ';' + field[i][j]))
        markup.row(*row)
        row = []
    if var == 0:
        bot.edit_message_text(chat_id=chat_id,
                              message_id=message_id,
                              text='Ваш ход',
                              reply_markup=markup)
    elif var == 1:
        bot.send_message(chat_id=chat_id, text='Ваш ход', reply_markup=markup)
Example #17
0
    def r_print_r(self, st=""):
        keyboard = telebot.types.InlineKeyboardMarkup()
        a = field[str(self.message_chat_id)]
        dd = {0: " ", 1: "🌲", 2: "🕴", 3: "👻"}
        l = len(a)
        k_k = l**0.5
        f = []
        x, y, n = 1, 1, 0

        while x <= k_k:
            tab = []
            keyfield = []
            y = 1
            while y <= k_k:
                tab.append(a[n])
                #                    print("error_2")
                keyfield.append(
                    telebot.types.InlineKeyboardButton(
                        text="%s" % dd[a[n]],
                        callback_data="field_%s_%s" % (a[n], n)))
                y += 1
                n += 1
            x += 1
            f.append(tab)
            keyboard.row(*keyfield)


#        pprint(f)
        if st == "new":
            bot.send_message(text="Ходите",
                             chat_id=self.message_chat_id,
                             reply_markup=keyboard)
        else:
            try:

                bot.edit_message_text(text="Ходите",
                                      chat_id=self.message_chat_id,
                                      message_id=self.call_message_id,
                                      reply_markup=keyboard)
            except:
                pass
Example #18
0
def callbackSettings(call):
  chatId = call.message.chat.id
  currentChat = Chats.getChat(chatId)
  settingsStrings = call.replies.stg.strings

  # * Toggling setting, if a simple callback
  for i, callback in enumerate(allSettingsCallbacks):
    if call.data == callback:
      Settings.toggleSetting(currentChat, settingsStrings[i][0][3])

  # * Upating the message
  markup = settingsMarkup(chatId)
  try:
    bot.edit_message_text(
      Language(chatId).strs.stg.msgTitle, chatId,
      call.message.message_id,
      reply_markup=markup,
    )

    bot.answer_callback_query(call.id, Language(chatId).strs.stg.success)
  except ApiException as e:
    print(e)
Example #19
0
def loop_teaze(user_id, start_round_message):
    roundlast = db.Rounds.get_lastRound()
    drop_duration = roundlast.drop_duration()
    message_id = start_round_message.message_id
    user = db.Users.get(user_id)
    lang = user.lang
    btn_text = {
        "en": f"Join round @{user.username}",
        "de": f"Runde mit @{user.username} beitreten"
    }
    usern_mrkp = telebot.types.InlineKeyboardMarkup()
    usern_btn = telebot.types.InlineKeyboardButton(text=btn_text[lang],
                                                   callback_data="join_round")
    usern_mrkp.add(usern_btn)

    while drop_duration:
        text = {
            "en":
            f"""
The next engagement round starts in <b> {drop_duration} seconds </b> ⏳. If
you want to participate, just press the button 
            """,
            "de":
            f"""
Die nächste Engagement-Runde startet in <b>{drop_duration} seconds</b> ⏳. Wenn
du daran teilnehmen möchtest, drücke einfach auf den Button ✅
            """
        }
        bot.edit_message_text(text=text[lang],
                              chat_id=user_id,
                              message_id=message_id,
                              parse_mode="html",
                              reply_markup=usern_mrkp)
        time.sleep(2)

        drop_duration = roundlast.drop_duration()
    print("it stopped")
Example #20
0
def showPatterns(patterns, chatId, messageId, variant=0):
    """
    Функция для просмотра шаблонов

    Parameters
    ----------
    patterns
        шаблоны
    messageId
        id сообщения.
    variant
        Вариант работы функции
    chatId
        id чата.
    """
    markup = telebot.types.InlineKeyboardMarkup(row_width=2)

    for i in range(len(patterns)):
        row = []
        name = patterns[i][0]
        row.append(
            telebot.types.InlineKeyboardButton(
                name, callback_data=createCallbackData('thisPattern',
                                                       el=name)))
        markup.add(*row)
    markup.row(
        telebot.types.InlineKeyboardButton('Добавить',
                                           callback_data='addPattern'))

    if variant == 0:
        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text='Шаблоны',
                              reply_markup=markup)
    elif variant == 1:
        bot.send_message(chat_id=chatId, text='Шаблоны', reply_markup=markup)
Example #21
0
 def _msg_handler(self):
     if self._sent_flag:
         self.msg = bot.edit_message_text(self.text,
                                          self.cid,
                                          self.mid,
                                          reply_markup=self.buttons.buttons,
                                          parse_mode='HTML')
         logger.debug(f"edit message for {self.msg.chat.id},manager {self}")
     else:
         self.msg = bot.send_message(self.cid,
                                     self.text,
                                     reply_markup=self.buttons.buttons,
                                     parse_mode='HTML')
         self.mid = self.msg.message_id
         self.buttons.set_id(self.cid, self.mid)
         self._sent_flag = True
         logger.debug(f"send message to {self.msg.chat.id},manager {self}")
     self._refresh_flag.off()
Example #22
0
def eventsCallback(call):
    """
    Функция-обработчик инлайн событий
    Для задач: вывод задач и иконки,
    Удаление задач и возвращение назад к списку.

    Parameters
    ----------
    call
        Объект call.
    """
    # working with json
    currentChatId = call.message.chat.id
    events = databaseHelper.get(currentChatId, 'events')
    if call.data == 'editevents':
        # sending
        createEventsDoneMarkup(call, events)
    elif call.data == 'eventsEditDone':
        if len(events) > 0:
            eventsMessage = ""
            for number, event in enumerate(events, 1):
                eventsMessage += f"<b><i>{number}.</i></b> {event['eventsName']}"

            inlineMarkup = types.InlineKeyboardMarkup(row_width=1)
            crumbButton = types.InlineKeyboardButton(
                '☰', callback_data='editevents')
            inlineMarkup.add(crumbButton)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text=eventsMessage,
                                  reply_markup=inlineMarkup,
                                  parse_mode='html')
        else:
            botMessage = "<i>Ты тоже заметил, что он пуст?</i>"
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text=botMessage,
                                  reply_markup=None,
                                  parse_mode='html')
    elif call.data.find('DeleventID=') != -1:
        newevents = events
        for number, event in enumerate(events, 1):
            deleventId = "DeleventID=" + str(number)
            if call.data == deleventId:
                # delete event
                newevents.pop(number - 1)
                databaseHelper.save(currentChatId, 'events', newevents)
                # sending
                events = databaseHelper.get(currentChatId, 'events')
                if len(events) > 0:
                    createEventsDoneMarkup(call, events)
                else:
                    doneButton = types.InlineKeyboardButton(
                        config.doneLabel, callback_data='eventsEditDone')
                    markup = types.InlineKeyboardMarkup(row_width=2)
                    markup.add(doneButton)
                    bot.edit_message_text(chat_id=call.message.chat.id,
                                          message_id=call.message.message_id,
                                          text=config.nothingForDelete,
                                          reply_markup=markup)
                break
    else:
        pass
Example #23
0
def editing(call):
    id = call.data[17:]
    SetCurrProject(id, call.from_user.id, cursor, db)
    num = call.data[16]
    if num == '1':
        keyboard = telebot.types.InlineKeyboardMarkup()
        #keyboard.add('Закончить')
        users = GetListOfUsers(cursor)
        for user in users:
            keyboard.add(telebot.types.InlineKeyboardButton(text=GetName(user[0], cursor), callback_data='addmember_'+str(user[0])+'_'+str(id)))
        keyboard.add(telebot.types.InlineKeyboardButton(text='<Закончить>', callback_data='addmember_finish_1'))
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        bot.send_message(call.message.chat.id,
                         'Выберите участников команды.',
                         reply_markup=keyboard)
        #username = call.from_user.id
        #SetState(username, 22, cursor, db)
    elif num == '2':
        members = GetMembersOfProject(id, cursor)
        keyboard = telebot.types.InlineKeyboardMarkup()
        for member in members:
            keyboard.add(
                telebot.types.InlineKeyboardButton(text=GetName(member[0],cursor), callback_data='delete_' + str(member[0]) + '*' + str(id)))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Закончить', callback_data='delete_%'))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Выберите курсанта из списка участников', reply_markup=keyboard)
    elif num == '3':
        keyboard = telebot.types.InlineKeyboardMarkup()
        keyboard.add(telebot.types.InlineKeyboardButton(text='Исследование рынка', callback_data='status_'+str(id)+'_1'))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Разработка MVP', callback_data='status_' + str(id)+'_2'))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Развитие проекта', callback_data='status_' + str(id)+'_3'))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Завершен', callback_data='status_' + str(id)+'_4'))
        keyboard.add(telebot.types.InlineKeyboardButton(text='Закрыт', callback_data='status_' + str(id)+'_5'))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Выберите новый статус проекта', reply_markup=keyboard)
        #SetCurrProject(id, call.from_user.id, cursor, db)
        #SetState(call.from_user.id, 23, cursor, db)
    elif num == '5':
        keyboard = telebot.types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        keyboard.add('Закончить')
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        users = GetListOfUsers(cursor)
        experts = list()
        for user in users:
            if isRang(GetRangs(user[0], cursor), [10]):
                experts.append(user)
        if len(experts):
            keyboard = telebot.types.InlineKeyboardMarkup()
            for expert in experts:
                keyboard.add(telebot.types.InlineKeyboardButton(text=GetName(expert[0], cursor),
                                                                callback_data='addexpert_' + str(expert[0])))
            keyboard.add(telebot.types.InlineKeyboardButton(text='<Закончить>', callback_data='addexpert_finish'))
            bot.send_message(call.message.chat.id,
                             'Выберите экспертов', reply_markup=keyboard)
        else:
            bot.send_message(call.message.chat.id,
                             'В данное время нет свободных экспертов')
    elif num == '4':
        keyboard = telebot.types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        new_project = "Создать новый проект"
        edit_project = "Редактировать проект"
        list_project = "Список проектов"
        exit = "Назад"
        flag = True
        if isRang(GetRangs(call.from_user.id, cursor), [7, 9, 10]):
            keyboard.add(new_project)
            keyboard.add(edit_project)
            flag = False
        if IsUserTeamlead(call.from_user.id, cursor) and flag:
            keyboard.add(edit_project)
        keyboard.add(list_project)
        keyboard.add(exit)
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        bot.send_message(call.message.chat.id, 'Вкладка <b>"Проекты"</b>', reply_markup=keyboard, parse_mode='HTML')
Example #24
0
def tasksCallback(call):
    """
    Функция-обработчик инлайн событий
    Для задач: вывод задач и иконки,
    Удаление задач и возвращение назад к списку.

    Parameters
    ----------
    call
        Объект call
    """
    # working with json
    currentChatId = call.message.chat.id
    tasks = databaseHelper.get(currentChatId, 'tasks')

    checkData = ""
    try:
        checkData = separateCallbackData(call.data)
    except Exception:
        checkData = "error"
        print("Error separating...")

    if checkData[0] == "XDAY":
        taskDate = checkData[3] + '.' + '0' + checkData[2] + '.' + checkData[1]
        id = checkData[4]
        # print(id)
        taskDate = str(dt.datetime.strptime(taskDate, '%d.%m.%Y').date())
        newTasks = tasks
        task = tasks[int(id) - 1]

        newTask = {
            "description": task["description"],
            "date": taskDate,
            "taskPrior": task["taskPrior"]
        }
        newTasks.pop(int(id) - 1)
        newTasks.insert(0, newTask)
        databaseHelper.save(currentChatId, 'tasks', newTasks)
        createTasksDoneMarkup(call, newTasks)

    elif (checkData[0] == 'XPREV-MONTH'):
        if (int(checkData[2]) == 1):
            markup = createCalendar(int(checkData[1]) - 1, 12, id=checkData[4])
        else:
            markup = createCalendar(int(checkData[1]),
                                    int(checkData[2]) - 1,
                                    id=checkData[4])

        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text="Пожалуйста, выберите дату",
                              reply_markup=markup)

    elif (checkData[0] == 'XNEXT-MONTH'):
        if (int(checkData[2]) == 12):
            markup = createCalendar(int(checkData[1]) + 1, 1, id=checkData[4])
        else:
            markup = createCalendar(int(checkData[1]),
                                    int(checkData[2]) + 1,
                                    id=checkData[4])

        bot.edit_message_text(chat_id=call.message.chat.id,
                              message_id=call.message.message_id,
                              text="Пожалуйста, выберите дату",
                              reply_markup=markup)

    elif call.data == 'editTasks':
        # sending
        createTasksDoneMarkup(call, tasks)

    elif call.data == 'tasksEditDone':
        # tasks.sort(key=itemgetter('taskPrior'))
        if len(tasks) > 0:
            tasksMessage = ""
            for number, task in enumerate(tasks, 1):
                tasksMessage += f"<b><i>{number}.</i></b> {task['description']}"

                tasksMessage += generateDeadline(task)

            inlineMarkup = types.InlineKeyboardMarkup(row_width=1)
            crumbButton = types.InlineKeyboardButton('☰',
                                                     callback_data='editTasks')
            inlineMarkup.add(crumbButton)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text=tasksMessage,
                                  reply_markup=inlineMarkup,
                                  parse_mode='html')
        else:
            botMessage = "<i>Ты тоже заметил, что он пуст?</i>"
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text=botMessage,
                                  reply_markup=None,
                                  parse_mode='html')
    elif call.data.find('EditTaskID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            EditTaskId = "EditTaskID=" + str(number)
            delTaskId = ""
            setDeadLineId = ""
            setPriorId = ""
            if call.data == EditTaskId:
                delTaskId = "DelTaskID=" + str(number)
                setDeadLineId = "DeadLineTaskID=" + str(number)
                setPriorId = "PriorTaskID=" + str(number)

                setDeadlineButton = types.InlineKeyboardButton(
                    "Установить дедлайн", callback_data=setDeadLineId)
                setPriorButton = types.InlineKeyboardButton(
                    "Поставить приоритет", callback_data=setPriorId)
                deleteButton = types.InlineKeyboardButton(
                    "Удалить задачу", callback_data=delTaskId)
                doneButton = types.InlineKeyboardButton(
                    config.doneLabel, callback_data='editTasks')

                markup = types.InlineKeyboardMarkup(row_width=2)
                markup.add(setDeadlineButton, setPriorButton, deleteButton)
                markup.row(doneButton)
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text="Настрой задачу под себя!",
                                      reply_markup=markup)
                break
    elif call.data.find('DeadLineTaskID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            deadlineTaskId = "DeadLineTaskID=" + str(number)
            EditTaskId = "EditTaskID=" + str(number)
            if call.data == deadlineTaskId:
                markup = createCalendar(id=str(number))
                doneButton = types.InlineKeyboardButton(
                    config.doneLabel, callback_data=EditTaskId)
                clearDeadline = types.InlineKeyboardButton(
                    "Убрать дедлайн",
                    callback_data=f'CleadDeadLineID={number}')
                markup.row(clearDeadline)
                markup.row(doneButton)
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text=config.selectDate,
                                      reply_markup=markup)

                break
    elif call.data.find('CleadDeadLineID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            cleardeadlineTaskId = "CleadDeadLineID=" + str(number)
            EditTaskId = "EditTaskID=" + str(number)
            if call.data == cleardeadlineTaskId:
                task = newTasks[int(number) - 1]
                newTask = {
                    "description": task["description"],
                    "date": "no date",
                    "taskPrior": task["taskPrior"]
                }
                newTasks.pop(int(number) - 1)
                newTasks.insert(0, newTask)
                databaseHelper.save(currentChatId, 'tasks', newTasks)
                createTasksDoneMarkup(call, newTasks)
                break

    elif call.data.find('PriorTaskID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            priorTaskId = "PriorTaskID=" + str(number)
            EditTaskId = "EditTaskID=" + str(number)
            if call.data == priorTaskId:
                doneButton = types.InlineKeyboardButton(
                    config.doneLabel, callback_data=EditTaskId)
                markup = types.InlineKeyboardMarkup(row_width=3)
                oneBtn = types.InlineKeyboardButton(
                    "1", callback_data=f'setPriorID={number}=1')
                twoBtn = types.InlineKeyboardButton(
                    "2", callback_data=f'setPriorID={number}=2')
                threeBtn = types.InlineKeyboardButton(
                    "3", callback_data=f'setPriorID={number}=3')
                markup.add(oneBtn, twoBtn, threeBtn)
                markup.row(doneButton)
                bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text="1 - Очень важно, 2 - важно, 3 - наименее важно",
                    reply_markup=markup)
                break
    elif call.data.find('setPriorID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            priorTaskId = "setPriorID=" + str(number)
            if call.data[:-2] == priorTaskId:
                prior = call.data[len(call.data) - 1]

                task = newTasks[number - 1]
                newTask = {
                    "description": task["description"],
                    "date": task["date"],
                    "taskPrior": int(prior)
                }
                newTasks.pop(number - 1)
                newTasks.insert(0, newTask)
                databaseHelper.save(currentChatId, 'tasks', newTasks)
                createTasksDoneMarkup(call, newTasks)
                break
    elif call.data.find('DelTaskID=') != -1:
        newTasks = tasks
        for number, task in enumerate(tasks, 1):
            delTaskId = "DelTaskID=" + str(number)
            if call.data == delTaskId:
                # delete task
                newTasks.pop(number - 1)
                databaseHelper.save(currentChatId, 'tasks', newTasks)
                # sending
                tasks = databaseHelper.get(currentChatId, 'tasks')
                if len(tasks) > 0:
                    createTasksDoneMarkup(call, tasks)
                else:
                    doneButton = types.InlineKeyboardButton(
                        config.doneLabel, callback_data='tasksEditDone')
                    markup = types.InlineKeyboardMarkup(row_width=2)
                    markup.add(doneButton)
                    bot.edit_message_text(chat_id=call.message.chat.id,
                                          message_id=call.message.message_id,
                                          text=config.nothingForDelete,
                                          reply_markup=markup)
                break
    else:
        pass
Example #25
0
def callback_inline(call):
    # Если сообщение из чата с ботом
    if call.message:
        #________________________________________________________________________________________________________________
        #Самые главные кнопки, где книги и прочее
        #________________________________________________________________________________________________________________
        if call.data == "book":
            bot.send_chat_action(call.message.chat.id, 'typing')
            keyb = types.InlineKeyboardMarkup()
            books = types.InlineKeyboardButton(text="Книги📚",
                                               callback_data="books")
            video = types.InlineKeyboardButton(text="Видеокурсы📹",
                                               callback_data="video")
            vkus = types.InlineKeyboardButton(text="Вкусняшки😋",
                                              callback_data="vkus")
            service = types.InlineKeyboardButton(text="Сервисы😧",
                                                 callback_data="servise")
            slovar = types.InlineKeyboardButton(text="Словари брут📖",
                                                callback_data="slovar")
            audio = types.InlineKeyboardButton(text="Аудиокниги🔊",
                                               callback_data="audio")
            back = types.InlineKeyboardButton(text="🔙", callback_data="glav")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            keyb.add(books, video, vkus, service, slovar, audio)
            keyb.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Какой пункт выберешь?*",
                                  reply_markup=keyb,
                                  parse_mode="Markdown")
        elif call.data == "infa":
            bot.send_chat_action(call.message.chat.id, 'typing')
            key = types.InlineKeyboardMarkup()
            arch = types.InlineKeyboardButton(text="Arch Linux",
                                              callback_data="arch linux")
            ubuntu = types.InlineKeyboardButton(text="Ubuntu Linux",
                                                callback_data="ubuntu linux")
            debian = types.InlineKeyboardButton(text="Debian Linux",
                                                callback_data="debian linux")
            gentoo = types.InlineKeyboardButton(text="Gentoo Linux",
                                                callback_data="gentoo linux")
            lfs = types.InlineKeyboardButton(text="LFS",
                                             callback_data="lfs linux")
            kali = types.InlineKeyboardButton(text="Kali Linux",
                                              callback_data="kali linux")
            back = types.InlineKeyboardButton(text="🔙", callback_data="glav")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            key.add(arch, ubuntu, debian, gentoo, lfs, kali)
            key.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Какой дистрибутив желаешь?*",
                                  reply_markup=key,
                                  parse_mode="Markdown")
        elif call.data == "glav":
            bot.send_chat_action(call.message.chat.id, 'typing')
            keyboard = types.InlineKeyboardMarkup()
            book = types.InlineKeyboardButton(text="Обучаться📚",
                                              callback_data="book")
            infa = types.InlineKeyboardButton(text="Wiki Linux",
                                              callback_data="infa")
            citata = types.InlineKeyboardButton(text="Цитата🤤",
                                                callback_data="citata")
            commands_help = types.InlineKeyboardButton(
                text="Помощь по командам📄", callback_data="helpmenu")

            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            keyboard.add(book, infa, citata, commands_help)
            keyboard.add(delete)

            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Что желаешь?*",
                                  reply_markup=keyboard,
                                  parse_mode="Markdown")
        elif call.data == "books":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='🔜',
                                                  url='https://clck.ru/N3e6i')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Книги, читаем и развиваемся*📚",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "video":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='🔜',
                                                  url='https://clck.ru/N3eBX')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Видеокурсы*📹",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "vkus":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='🔜',
                                                  url='https://clck.ru/MoUC7')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Вкусняшки*😋",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "servise":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='🔜',
                                                  url='https://clck.ru/NBvQt')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Сервисы*😧",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "slovar":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='🔜',
                                                  url='https://clck.ru/NPLf6')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Словари для брутфорса*📖",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "audio":
            markup = types.InlineKeyboardMarkup()
            btn_my_site = types.InlineKeyboardButton(
                text='🔜', url='https://clck.ru/MpokB')
            back = types.InlineKeyboardButton(text="🔙", callback_data="book")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_my_site)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*Аудиокурсы*🔊",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
#________________________________________________________________________________________________________________
#Рандомные цитатики
#________________________________________________________________________________________________________________
        elif call.data == "citata":
            try:
                markup = types.InlineKeyboardMarkup()
                duble = types.InlineKeyboardButton(text="Еще цитату😋",
                                                   callback_data="citata")
                back = types.InlineKeyboardButton(text="🔙",
                                                  callback_data="glav")
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete")
                markup.add(duble)
                markup.add(back, delete)
                url = urls_citata()

                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text=url,
                                      reply_markup=markup)
            except apihelper.ApiTelegramException as e:
                logfile(call, "Злоупотребление кнопками").time()
#________________________________________________________________________________________________________________
#Кнопки для wiki and download linux
#________________________________________________________________________________________________________________
        elif call.data == "arch linux":
            markup = types.InlineKeyboardMarkup()
            downloads = types.InlineKeyboardButton(
                text='Загрузить', url='archlinux.org/download')
            wiki = types.InlineKeyboardButton(text='Вики',
                                              url='wiki.archlinux.org')
            install = types.InlineKeyboardButton(text='Инструкция',
                                                 url='https://clck.ru/N5eWx')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(downloads, wiki, install)
            markup.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*[Arch Linux]   Для самых привередливых*",
                reply_markup=markup,
                parse_mode="Markdown")
        elif call.data == "ubuntu linux":
            markup = types.InlineKeyboardMarkup()
            downloads = types.InlineKeyboardButton(text='Загрузить',
                                                   url='releases.ubuntu.com')
            wiki = types.InlineKeyboardButton(
                text='Вики', url='help.ubuntu.ru/wiki/главная')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(downloads, wiki)
            markup.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*[Ubuntu Linux]   Для самых маленьких котят*",
                reply_markup=markup,
                parse_mode="Markdown")
        elif call.data == "debian linux":
            markup = types.InlineKeyboardMarkup()
            downloads = types.InlineKeyboardButton(text='Загрузить',
                                                   url='debian.org/CD/')
            wiki = types.InlineKeyboardButton(
                text='Вики', url='wiki.debian.org/ru/DebianRussian')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(downloads, wiki)
            markup.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*[Debian Linux]   Для любителей серверов*",
                reply_markup=markup,
                parse_mode="Markdown")
        elif call.data == "gentoo linux":
            markup = types.InlineKeyboardMarkup()
            downloads = types.InlineKeyboardButton(text='Загрузить',
                                                   url='gentoo.org/downloads')
            wiki = types.InlineKeyboardButton(
                text='Handbook',
                url='wiki.gentoo.org/wiki/Handbook:Main_Pagecg/ru')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(downloads, wiki)
            markup.add(back, delete)
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="*[Gentoo Linux]   Для вегетарианцев*",
                                  reply_markup=markup,
                                  parse_mode="Markdown")
        elif call.data == "lfs linux":
            markup = types.InlineKeyboardMarkup()
            downloads = types.InlineKeyboardButton(text='Загрузить',
                                                   url='linuxfromscratch.org')
            wiki = types.InlineKeyboardButton(text='Russian book',
                                              url='book.linuxfromscratch.ru')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(downloads, wiki)
            markup.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*[LFS Linux]   Тут даже нечего сказать*",
                reply_markup=markup,
                parse_mode="Markdown")
        elif call.data == "kali linux":
            markup = types.InlineKeyboardMarkup()
            btn_site = types.InlineKeyboardButton(text='Взломать',
                                                  url='https://clck.ru/JwL3')
            back = types.InlineKeyboardButton(text="🔙", callback_data="infa")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(btn_site)
            markup.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*[Kall Linux]   Наше время пришло, мой друг*",
                reply_markup=markup,
                parse_mode="Markdown")
#________________________________________________________________________________________________________________
#Кнопки для команды /help
#________________________________________________________________________________________________________________
        elif call.data == "helpmenu":
            keyboard = types.InlineKeyboardMarkup()  #Добавляем кнопки
            commands_user = types.InlineKeyboardButton(text="Пользователь🤵",
                                                       callback_data="user")
            commands_admin = types.InlineKeyboardButton(text="Админ🤴",
                                                        callback_data="admins")
            back = types.InlineKeyboardButton(text="🔙", callback_data="glav")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            keyboard.add(commands_user,
                         commands_admin)  #Добавляем кнопки для вывода
            keyboard.add(back, delete)
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="*Кто ты?*",
                reply_markup=keyboard,
                parse_mode="Markdown")  #Выводим кнопки и сообщение
        elif call.data == "user":
            markup = types.InlineKeyboardMarkup()
            back = types.InlineKeyboardButton(text="🔙",
                                              callback_data="helpmenu")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(back, delete)  ###
            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="📎*Команды для пользователя*📎"
                "\n`/start` - _запустить бота_"
                "\n`/id` - _Узнать свой Telegram ID_"
                "\n`/github` - _Репозиторий кота_"
                "\n`/say` *text* - _крик из толпы_"
                "\n`/invite` - _Получить пригласительную ссылку_"
                "\n`/cats` - _Получить рандомных котеек_"
                "\n`/encode` *text* - _Закодировать в base64_"
                "\n`/decode` *text* - _Декодировать base64_"
                "\n`/url` *Ссылка на сайт* - _Скриншот сайта_"
                "\n`/wiki` *text* - _Поиск информации в вики_"
                "\n`/ru` *text* - _Перевести на русский_"
                "\n`/en` *text* - _Перевести на английский_"
                "\n`/post` *text* - _Запостить шутку на канал_"
                "\n`/game` - _Игра камень, ножницы, бумага_"
                "\n`/search` *text* - _Поиск в гугле_"
                "\n`/sy` *text* - _Поиск в ютубе_"
                "\n`/proxy` - _Получить свежий список прокси_"
                "\n`/top` - _Показать активных пользователей_"
                "\n`/arch_news` - _Показать новости Арча_"
                "\n`/news` - _Новости_"
                "\n`/whois` *IP* - _Узнать информацию об IP_"
                "\n`/kernel` - _Показать последние версии ядер_",
                reply_markup=markup,
                parse_mode="Markdown"
            )  #Выводим кнопки и сообщение parse_mode= "Markdown"
        elif call.data == "admins":
            markup = types.InlineKeyboardMarkup()
            back = types.InlineKeyboardButton(text="🔙",
                                              callback_data="helpmenu")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            markup.add(back, delete)

            bot.edit_message_text(
                chat_id=call.message.chat.id,
                message_id=call.message.message_id,
                text="📎*Команды для админов*📎"
                "\n`/kick` - _Кикнуть пользователя_"
                "\n`/pin` - _Закрепить пересланное сообщение_"
                "\n`/unpin` - _Открепить сообщение_"
                "\n`/mute` - _Дать мут на 10 минут_"
                "\n`/unmute` - _Снять мут_"
                "\n`/link` - _Получить пригласительную ссылку, после каждого запроса ссылка меняется_"
                "\n`/des`  - _Изменить описание чата, если пустая команда, то описание стирается_ "
                "\n`/logs` - _Просмотр журнала ошибок_"
                "\n`/unban` *ID* или *Пересланное сообщение* - _Убрать пользователя из черного списка_"
                "\n`/restart` - _Перезапустить основного бота_",
                reply_markup=markup,
                parse_mode="Markdown")
#________________________________________________________________________________________________________________
#Рандомные котейки
#________________________________________________________________________________________________________________
        elif call.data == "cats":
            bot.delete_message(call.message.chat.id, call.message.message_id)
            keyboard = types.InlineKeyboardMarkup()
            cats = types.InlineKeyboardButton(text="Еще хочу котейку",
                                              callback_data="cats")
            delete = types.InlineKeyboardButton(text="❌",
                                                callback_data="delete")
            keyboard.add(cats, delete)
            user_agent = {
                'user-agent':
                'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
            }

            search = "https://theoldreader.com/kittens/1366/768/js"  #Запрашиваем у юзера, что он хочет найти
            url = requests.get(search, headers=user_agent)  #Делаем запрос
            soup = BeautifulSoup(url.text, features="lxml")  #Получаем запрос
            result = soup.find("img").get(
                "src")  #Ищем тег <img src="ссылка.png"
            result = "https://theoldreader.com" + result
            bot.send_photo(chat_id=call.message.chat.id,
                           photo=result,
                           reply_markup=keyboard)
#________________________________________________________________________________________________________________
#Игра камень ножницы бумага
#________________________________________________________________________________________________________________
        elif call.data == "kamen":
            a = ['Камень', 'Ножницы', 'Бумага']
            comp_number = random.choice(a)
            enter_all = "Вы выбрали 'Камень'" + ", а мой выбор '" + comp_number + "'"
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="Ожидаем результата! (5 секунд)")
            sleep(5)
            if comp_number == "Камень":  # Условие для ничьей
                delete = bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=enter_all + "\nНичья")
                sleep(5)
                bot.delete_message(call.message.chat.id, delete.message_id)
            else:  # Условие для выигрыша или проигрыша
                if comp_number == "Ножницы":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nТы победил, камень поломал ножницы!")
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
                elif comp_number == "Бумага":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nЯ победил, бумага закатала камень!")
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
        elif call.data == "noj":
            a = ['Камень', 'Ножницы', 'Бумага']
            comp_number = random.choice(a)
            enter_all = "Вы выбрали 'Ножницы'" + ", а мой выбор '" + comp_number + "'"
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="Ожидаем результата! (5 секунд)")
            sleep(5)
            if comp_number == "Ножницы":  # Условие для ничьей
                delete = bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=enter_all + "\nНичья")
                sleep(5)
                bot.delete_message(call.message.chat.id, delete.message_id)
            else:  # Условие для выигрыша или проигрыша
                if comp_number == "Камень":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nЯ победил, так как вы выбрали ножницы. Камень поломал ножницы!"
                    )
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
                elif comp_number == "Бумага":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nТы победил, ножницы разрезали бумагу!")
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
        elif call.data == "bumaga":
            a = ['Камень', 'Ножницы', 'Бумага']
            comp_number = random.choice(a)
            enter_all = "Вы выбрали 'Бумага'" + ", а мой выбор '" + comp_number + "'"
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text="Ожидаем результата! (5 секунд)")
            sleep(5)
            if comp_number == "Бумага":  # Условие для ничьей
                delete = bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=enter_all + "\nНичья")
                sleep(5)
                bot.delete_message(call.message.chat.id, delete.message_id)
            else:  # Условие для выигрыша или проигрыша
                if comp_number == "Камень":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nТы победил, бумага закатала камень!")
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
                elif comp_number == "Ножницы":
                    delete = bot.edit_message_text(
                        chat_id=call.message.chat.id,
                        message_id=call.message.message_id,
                        text=enter_all +
                        "\nЯ победил, ножницы разрезали бумагу!")
                    sleep(5)
                    bot.delete_message(call.message.chat.id, delete.message_id)
        elif call.data == "delete":
            bot.delete_message(call.message.chat.id, call.message.message_id)
        elif call.data == "delete_2":
            bot.delete_message(call.message.chat.id, call.message.message_id)
            bot.delete_message(call.message.chat.id,
                               call.message.message_id - 1)
        elif call.data == "dalee_top":
            cursor = conn.cursor()
            try:
                cursor.execute(
                    "SELECT row_number() OVER(ORDER BY message::int DESC), user_id, name, message, new, date_add FROM top_users;"
                )
                rows = cursor.fetchall()
                result_list = []
                del rows[:10]

                for row in rows[:10]:
                    beginner = ""
                    if row[4] == True:
                        beginner = "[Новичок]"
                        date = row[5].split()

                        year = int(date[0])  # Год
                        month = int(date[1])  # Месяц
                        day = int(date[2])  # День

                        date_new = datetime.date(year, month, day)
                        date_last = datetime.datetime.now().day - date_new.day
                        if date_last >= 5:
                            cursor.execute(
                                f"""UPDATE top_users SET new = FALSE WHERE user_id = {row[1]};"""
                            )
                            cursor.execute(
                                f"UPDATE top_users SET date_add = '' WHERE user_id = {row[1]};"
                            )
                            conn.commit()

                    number = row[0]
                    user_id = row[1]
                    last_name = row[2]
                    message = row[3]
                    result = f'{number} ✅ {last_name} ✉ = {message}     {beginner}\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖'
                    result_list.append(result)
                results_lists_last = "\n".join(result_list)
                markup = types.InlineKeyboardMarkup(
                )  #Отвечаем, если выхов был из супер чата
                back_top = types.InlineKeyboardButton(
                    text='🔙', callback_data="back_top"
                )  #Отвечаем, если выхов был из супер чата
                dalee_top_one = types.InlineKeyboardButton(
                    text='🔜', callback_data="dalee_top_one")
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete_2")
                markup.add(back_top, dalee_top_one)
                markup.add(delete)  #Отвечаем, если выхов был из супер чата
                bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=
                    f"📎Активность пользователей в чате📎\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖\n{results_lists_last}",
                    reply_markup=markup)
            except Exception as e:
                print(e)
                markup = types.InlineKeyboardMarkup()
                dalee_top = types.InlineKeyboardButton(
                    text='🔙', callback_data="dalee_top")
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete_2")
                markup.add(dalee_top, delete)
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text="Таблица пустая, нечего выводить",
                                      reply_markup=markup)
        elif call.data == "back_top":
            cursor = conn.cursor()
            try:
                cursor.execute(
                    "SELECT row_number() OVER(ORDER BY message::int DESC), user_id, name, message, new, date_add FROM top_users;"
                )
                rows = cursor.fetchall()
                result_list = []

                for row in rows[:10]:
                    beginner = ""
                    if row[4] == True:
                        beginner = "[Новичок]"
                        date = row[5].split()

                        year = int(date[0])  # Год
                        month = int(date[1])  # Месяц
                        day = int(date[2])  # День

                        date_new = datetime.date(year, month, day)
                        date_last = datetime.datetime.now().day - date_new.day
                        if date_last >= 5:
                            cursor.execute(
                                f"""UPDATE top_users SET new = FALSE WHERE user_id = {row[1]};"""
                            )
                            cursor.execute(
                                f"UPDATE top_users SET date_add = '' WHERE user_id = {row[1]};"
                            )
                            conn.commit()

                    number = row[0]
                    user_id = row[1]
                    last_name = row[2]
                    message = row[3]
                    result = f'{number} ✅ {last_name} ✉ = {message}     {beginner}\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖'
                    result_list.append(result)

                results_lists_last = "\n".join(result_list)
                markup = types.InlineKeyboardMarkup(
                )  #Отвечаем, если выхов был из супер чата
                dalee_top = types.InlineKeyboardButton(
                    text='🔜', callback_data="dalee_top"
                )  #Отвечаем, если выхов был из супер чат
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete_2")
                markup.add(dalee_top,
                           delete)  #Отвечаем, если выхов был из супер чата
                bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=
                    f"📎Активность пользователей в чате📎\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖\n{results_lists_last}",
                    reply_markup=markup)
            except Exception as e:
                print(e)
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text="Таблица пустая, нечего выводить")
        elif call.data == "dalee_top_one":
            cursor = conn.cursor()
            try:
                cursor.execute(
                    "SELECT row_number() OVER(ORDER BY message::int DESC), user_id, name, message, new, date_add FROM top_users;"
                )
                rows = cursor.fetchall()
                result_list = []

                beginner = ""
                for row in rows[20:30]:
                    if row[4] == True:
                        beginner = "[Новичок]"
                        date = row[5].split()

                        year = int(date[0])  # Год
                        month = int(date[1])  # Месяц
                        day = int(date[2])  # День

                        date_new = datetime.date(year, month, day)
                        date_last = datetime.datetime.now().day - date_new.day
                        if date_last >= 5:
                            cursor.execute(
                                f"""UPDATE top_users SET new = FALSE WHERE user_id = {row[1]};"""
                            )
                            cursor.execute(
                                f"UPDATE top_users SET date_add = '' WHERE user_id = {row[1]};"
                            )
                            conn.commit()
                    number = row[0]
                    user_id = row[1]
                    last_name = row[2]
                    message = row[3]
                    result = f'{number} ✅ {last_name} ✉ = {message}    {beginner}\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖'
                    result_list.append(result)
                results_lists_last = "\n".join(result_list)

                markup = types.InlineKeyboardMarkup(
                )  #Отвечаем, если выхов был из супер чата
                dalee_top = types.InlineKeyboardButton(
                    text='🔙', callback_data="dalee_top"
                )  #Отвечаем, если выхов был из супер чата
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete_2")
                markup.add(dalee_top,
                           delete)  #Отвечаем, если выхов был из супер чата
                bot.edit_message_text(
                    chat_id=call.message.chat.id,
                    message_id=call.message.message_id,
                    text=
                    f"📎Активность пользователей в чате📎\n➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖\n{results_lists_last}",
                    reply_markup=markup)
            except Exception as e:
                print(e)
                markup = types.InlineKeyboardMarkup()
                dalee_top = types.InlineKeyboardButton(
                    text='🔙', callback_data="dalee_top")
                delete = types.InlineKeyboardButton(text="❌",
                                                    callback_data="delete_2")
                markup.add(dalee_top, delete)
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.message_id,
                                      text="Таблица пустая, нечего выводить",
                                      reply_markup=markup)
Example #26
0
def lead_votes(call):
    items = call.data.split('%')
    criterion = items[1]
    id = items[2]
    expert = items[3]
    lead = '@' + call.from_user.username
    if criterion == '4':
        AcceptMark(lead, id, expert, cursor, db)
        expert = GetNextExpertForVoting(lead, id, cursor)
        if expert == 0:
            bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
            bot.send_message(GetChatId(lead, cursor), 'Вы оценили всех экспертов. Спасибо за участие')
            if IsVotingFinished(id, cursor):
                bot.send_message(GetChatId(lead, cursor), 'Оценивание завершено')
                teamleads = GetListOfAcceptedTeamleads(id, cursor)
                experts = GetExperts()
                CompileMarksOfExperts(id, experts, teamleads, cursor, db)
                cursor.execute('SELECT voting_date FROM expert_voting WHERE id=' + str(id))
                time = cursor.fetchone()[0]
                marks = GetAllExpertsMarksForDate(time, cursor)
                cur_expert = marks[0][0]
                result = '<b>Результаты оценки</b>\nЭксперт: <b>' + GetName(cur_expert, cursor) + '</b>\n'
                ChangeVotingStatus('Finished', id, cursor, db)
                for mark in marks:
                    if mark[0] == cur_expert:
                        if mark[1] == '1' or mark[1] == 1:
                            result += 'Движение'
                        elif mark[1] == '2' or mark[1] == 2:
                            result += 'Завершенность'
                        elif mark[1] == '3' or mark[1] == 3:
                            result += 'Подтверждение средой'
                        result += ': <b>' + str(mark[2]) + '</b>\n'
                    else:
                        cur_expert = mark[0]
                        result += '\nЭксперт: <b>' + GetName(mark[0], cursor) + '</b>\n '
                        if mark[1] == '1' or mark[1] == 1:
                            result += 'Движение'
                        elif mark[1] == '2' or mark[1] == 2:
                            result += 'Завершенность'
                        elif mark[1] == '3' or mark[1] == 3:
                            result += 'Подтверждение средой'
                        result += ': <b>' + str(mark[2]) + '</b>\n'
                for teamlead in teamleads:
                    bot.send_message(GetChatId(teamlead[0], cursor), result, parse_mode='HTML')
        else:
            mess = 'Оценивание экспертов\nЭксперт: ' + GetName(expert, cursor) + '\nДвижение:' + \
                   str(GetMarkForTeamLeadOf(lead, id, expert, 1, cursor)) + '\nЗавершенность:' + \
                   str(GetMarkForTeamLeadOf(lead, id, expert, 2, cursor)) + '\nПодтверждение средой:' + \
                   str(GetMarkForTeamLeadOf(lead, id, expert, 3, cursor))
            keyboard = telebot.types.InlineKeyboardMarkup()
            keyboard.add(telebot.types.InlineKeyboardButton(text="Движение", callback_data="exp_bus%1%"
                                                                                           + str(id) + "%" + expert))
            keyboard.add(telebot.types.InlineKeyboardButton(text="Завершенность", callback_data="exp_bus%2%"
                                                                                                + str(
                id) + "%" + expert))
            keyboard.add(telebot.types.InlineKeyboardButton(text="Подтверждение средой", callback_data="exp_bus%3%"
                                                                                                       + str(
                id) + "%" + expert))
            keyboard.add(telebot.types.InlineKeyboardButton(text="Следующий", callback_data="exp_bus%4%"
                                                                                            + str(id) + "%" + expert))
            # bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
            #bot.send_message(GetChatId(lead, cursor), mess, reply_markup=keyboard)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                                  text=mess, reply_markup=keyboard)
    else:
        PutMarkForTeamLeadOf(lead, id, expert, criterion, cursor, db)
        mess = 'Оценивание экспертов\nЭксперт: ' + GetName(expert, cursor) + '\nДвижение:' +\
               str(GetMarkForTeamLeadOf(lead, id, expert, 1, cursor))+'\nЗавершенность:' + \
               str(GetMarkForTeamLeadOf(lead, id, expert, 2, cursor))+'\nПодтверждение средой:' +\
               str(GetMarkForTeamLeadOf(lead, id, expert, 3, cursor))
        keyboard = telebot.types.InlineKeyboardMarkup()
        keyboard.add(telebot.types.InlineKeyboardButton(text="Движение", callback_data="exp_bus%1%"
                                                                                       + str(id) + "%" + expert))
        keyboard.add(telebot.types.InlineKeyboardButton(text="Завершенность", callback_data="exp_bus%2%"
                                                                                            + str(id) + "%" + expert))
        keyboard.add(telebot.types.InlineKeyboardButton(text="Подтверждение средой", callback_data="exp_bus%3%"
                                                                                                   + str(
            id) + "%" + expert))
        keyboard.add(telebot.types.InlineKeyboardButton(text="Следующий", callback_data="exp_bus%4%"
                                                                                        + str(id) + "%" + expert))
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        bot.send_message(GetChatId(lead, cursor), mess, reply_markup=keyboard)
Example #27
0
def modifyMessage(bot_instance, message):
  # * Checking if a message id an a chat id match a those which are in the DB.
  # * Then we assume, that the message it's a new value for a setting, so we
  # * change it.

  currentChat = Chats.getChat(message.chat.id)
  
  if currentChat is None:
    return

  editMessageInfo = currentChat.settings.editMessageInfo

  if (editMessageInfo and
      editMessageInfo['requestMessageId'] + 1 == message.message_id and
      editMessageInfo['requestChatId'] == message.chat.id):

    try:
      editArgument = int(message.text.split()[0])

      # * Changing setting value and sending user a reponse
      originalChatId = editMessageInfo['originalChatId']
      chatWeToChange = Chats.getChat(originalChatId)
      strings = Language(originalChatId).strs
      originalChat = Chats.getChat(originalChatId)

      # * Checking if new value is not the same as it was before
      oldValue = Settings.getSettingsValue(originalChat, editMessageInfo['commandName'])
      print(editArgument, oldValue)
      if editArgument == oldValue:
        raise ValueError()

    except ValueError as e:
      print(e)
      bot.send_message(message.chat.id, strings.stg.valueIsWrong)
      editMessageInfo['requestMessageId'] = message.message_id + 1
      currentChat.save()

    # * Changes setting
    Settings.setSettingValue(
      chatWeToChange,
      editMessageInfo['commandName'],
      editArgument
    )

    # * Deleting the spare replies, when the number of saved replies
    # * is higher then the new value of removeAfter

    idsToRemove = []
    if editMessageInfo['commandName'] == 'removeAfter' and oldValue > editArgument:
      for i, response in enumerate(originalChat.responses.items()):
        if i >= oldValue - editArgument:
          break

        try:
          bot_instance.delete_message(originalChatId, int(response[0]))
          if response[1]['connectedIDs']:
            for chatId, ids in response[1]['connectedIDs'].items():
              for id in ids:
                # pass
                bot_instance.delete_message(int(chatId), id)
        except ApiException as e:
          print(e)

        idsToRemove.append(response[0])

      for toRemove in idsToRemove:
        del originalChat.responses[toRemove]
      originalChat.save()

    # * Updates settings message in the originalChat
    bot.edit_message_text(
      strings.stg.msgTitle,
      originalChatId,
      originalChat.settings.lastMessageId[0],
      reply_markup=settingsMarkup(originalChatId)
    )

    # * Answering
    bot.answer_callback_query(
      editMessageInfo['callbackId'],
      strings.stg.changeSuccess
    )
Example #28
0
def calendarCallback(call):
    """
    Колбеки для всего модуля timetable.

    Parameters
    ----------
    call
        Объект call.
    """
    chatId = call.message.chat.id
    messageId = call.message.message_id

    markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True,
                                               row_width=1)
    buttonTimetableBack = telebot.types.KeyboardButton('Назад')
    markup.add(buttonTimetableBack)
    data = separateCallbackData(call.data)

    if call.data == 'new':
        prevID = config.IDshowTimetableMenu
        status = 3

        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chatId, config.enterTimeSubject, reply_markup=None)

    elif call.data == 'add':
        prevID = config.IDshowTimetableMenu
        status = 4

        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chatId, config.enterTimeSubject, reply_markup=None)

    elif call.data == 'edit':
        # изменение выбранного элемента расписания
        prevID = config.IDshowTimetableMenu
        status = 5
        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chatId, 'Введите:', reply_markup=None)

    elif call.data == 'del':
        # удаление всей строчки расписания
        timetables = databaseHelper.get(chatId, 'timetable')
        date = databaseHelper.get(chatId, 'date')
        whence = databaseHelper.get(chatId, 'el').split(";")[0]
        el = databaseHelper.get(chatId, 'el').split(";")[1]

        timetable = ishas(timetables, date)
        timetables.remove(timetable)

        index = 0
        if (whence == 'time'):
            index = timetable[1].index(el)
        if (whence == 'subject'):
            index = timetable[2].index(el)

        timetable[1].pop(index)
        timetable[2].pop(index)
        if (len(timetable[1]) != 0):
            timetables.append(timetable)
            showTimetable(chatId, messageId, timetables, date)
        else:
            showEmptyTimetable(chatId, messageId, date)

        databaseHelper.save(chatId, 'timetable', timetables)

    elif call.data == 'pattern':
        #Вывод всех шаблонов
        prevID = 5
        patterns = databaseHelper.get(chatId, 'patterns')

        if len(patterns) == 0:
            showEmptyPattern(chatId, messageId)
        else:
            markup = telebot.types.InlineKeyboardMarkup(row_width=2)

            for i in range(len(patterns)):
                row = []
                name = patterns[i][0]
                row.append(
                    telebot.types.InlineKeyboardButton(
                        name,
                        callback_data=createCallbackData('thisPattern',
                                                         el=name)))
                markup.add(*row)
            markup.row(
                telebot.types.InlineKeyboardButton('Добавить',
                                                   callback_data='addPattern'))
            bot.edit_message_text(chat_id=chatId,
                                  message_id=messageId,
                                  text='Шаблоны',
                                  reply_markup=markup)

    elif call.data == 'addPattern':
        #добавление шаблона
        prevID = 5
        status = 6

        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chat_id=chatId,
                         text='Введите название шаблона',
                         reply_markup=None)

    elif data[0] == 'thisPattern':
        #работа с выбранным шаблонам
        prevID = config.IDshowTimetableMenu
        databaseHelper.save(chatId, 'el', data[4])

        delButton = types.InlineKeyboardButton('Удалить шаблон',
                                               callback_data='delPattern')
        editButton = types.InlineKeyboardButton('Изменить название',
                                                callback_data='editPattern')
        applyButton = types.InlineKeyboardButton('Применить',
                                                 callback_data='applyPattern')
        markup = types.InlineKeyboardMarkup(row_width=1)
        markup.add(*getListPattern(data[4], chatId))
        markup.row(delButton, editButton, applyButton)
        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text='Шаблоны',
                              reply_markup=markup)

    elif call.data == 'delPattern':
        #Удаление шаблона
        prevID = config.IDshowTimetableMenu
        patterns = databaseHelper.get(chatId, 'patterns')
        el = databaseHelper.get(chatId, 'el')

        for i in range(0, len(patterns)):
            if patterns[i][0] == el:
                patterns.pop(i)
                break
                pass
            pass

        if (len(patterns) != 0):
            showPatterns(patterns, chatId, messageId)
        else:
            showEmptyPattern(chatId, messageId)

        databaseHelper.save(chatId, 'patterns', patterns)

    elif call.data == 'editPattern':
        #Изменение названия шаблона
        prevID = config.IDshowTimetableMenu
        status = 8

        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chatId, 'Введите новое название', reply_markup=None)

    elif call.data == 'applyPattern':
        #Применение шаблона
        date = databaseHelper.get(chatId, 'date')
        timetable = []
        timetables = databaseHelper.get(chatId, 'timetable')
        patterns = databaseHelper.get(chatId, 'patterns')
        el = databaseHelper.get(chatId, 'el')
        index = 0
        for i in range(0, len(patterns)):
            if patterns[i][0] == el:
                index = i
                break
                pass
            pass

        fullSub = ' '
        fullTime = ' '

        timetable = [date, patterns[index][1], patterns[index][2]]

        timetables.append(timetable)

        databaseHelper.save(chatId, 'timetable', timetables)
        bot.send_message(chatId, 'Шаблон применен', reply_markup=None)
        showTimetable(chatId, chatId, timetables, date, variant=1)

    elif data[0] == 'patternItem':
        #работа с теккущим элементом шаблона
        prevID = config.IDshowTimetableMenu
        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'el', data[4] + ';' + data[5])

        markup = types.InlineKeyboardMarkup(row_width=2)
        delButton = types.InlineKeyboardButton('Удалить',
                                               callback_data='delItem')
        editButton = types.InlineKeyboardButton('Изменить',
                                                callback_data='editItem')

        markup.add(delButton, editButton)
        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text='Ваши действия',
                              reply_markup=markup)

    elif call.data == 'delItem':
        #удаление элемента шаблона
        patterns = databaseHelper.get(chatId, 'patterns')
        el = databaseHelper.get(chatId, 'el')
        name = el.split(';')[1]
        time = el.split(';')[0]

        patterns = databaseHelper.get(chatId, 'patterns')
        pattern = ''
        for i in range(0, len(patterns)):
            if patterns[i][0] == name:
                pattern = patterns[i]
                patterns.pop(i)
                break

        for i in range(0, len(pattern[1])):
            if pattern[1][i] == time:
                pattern[1].pop(i)
                pattern[2].pop(i)
                patterns.append(pattern)
                break

        databaseHelper.save(chatId, 'patterns', patterns)

        showPatterns(patterns, chatId, messageId)

    elif call.data == 'editItem':
        # изменение выбранного элемента расписания
        prevID = config.IDshowTimetableMenu
        status = 9
        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'status', status)

        bot.send_message(chatId, 'Введите:', reply_markup=None)
        pass

    elif data[0] == 'time' or data[0] == 'subject':
        prevID = config.IDshowTimetableMenu
        databaseHelper.save(chatId, 'prevMenuId', prevID)
        databaseHelper.save(chatId, 'el', data[0] + ";" + data[4])

        delButton = types.InlineKeyboardButton(config.delete,
                                               callback_data='del')
        editButton = types.InlineKeyboardButton(config.change,
                                                callback_data='edit')
        markup = types.InlineKeyboardMarkup(row_width=2)
        markup.add(delButton, editButton)
        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text=config.whatToDo,
                              reply_markup=markup)

    elif data[0] == 'DAY':
        prevID = config.IDshowTimetableMenu
        databaseHelper.save(chatId, 'prevMenuId', prevID)

        date = data[1] + '.' + data[2] + '.' + data[3]

        timetables = databaseHelper.get(chatId, 'timetable')

        if ishas(timetables, date) != False:
            showTimetable(chatId, messageId, timetables, date)
        else:
            showEmptyTimetable(chatId, messageId, date)

    elif data[0] == 'PREV-MONTH':
        if (int(data[2]) == 1):
            markup = createCalendar(int(data[1]) - 1, 12)
        else:
            markup = createCalendar(int(data[1]), int(data[2]) - 1)

        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text="Пожалуйста, выберите дату",
                              reply_markup=markup)

    elif data[0] == 'NEXT-MONTH':
        if (int(data[2]) == 12):
            markup = createCalendar(int(data[1]) + 1, 1)
        else:
            markup = createCalendar(int(data[1]), int(data[2]) + 1)

        bot.edit_message_text(chat_id=chatId,
                              message_id=messageId,
                              text="Пожалуйста, выберите дату",
                              reply_markup=markup)