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)
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)
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)
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)
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)
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]))
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="Принято")
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()
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]))
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)
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)
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)
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)
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)
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)
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)
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
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)
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")
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)
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()
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
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')
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
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)
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)
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 )
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)