def view_events(self, user): data = self.get_events() events = [] for i in data: today = int(datetime.datetime.timestamp( datetime.datetime.strptime(datetime.date.today().strftime('%d.%m.%Y'), '%d.%m.%Y'))) emoji = ' \U0001F3C1' if int(i[2]) <= today else '' s = str(i[0]) + '. ' + str(i[1]) + emoji events.append(s) if len(events) == 0: events.append('Здесь пока пусто.') buttons = [ interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( 9, interactive_media.InteractiveMediaButton('back_to_menu', 'Назад в меню') ) ] ) ] self.bot.messaging.send_message( self.bot.users.get_user_peer_by_id(user[0]), '*Для подробной информации пришли мне номер ивента*\n\n' + '\n'.join(events), buttons ) self.set_state(user[0], 'view_events')
def sender(count=10): i = 0 while i < count: i += 1 if i % 2 == 0: d.messaging.send_message(private_peer(966246115), "Simple text") else: d.messaging.send_message( private_peer(966246115), "Interactive media %d" % i, [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "Test", "OK"), interactive_media.InteractiveMediaConfirm( "Confirm text", "Confirm title")), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaSelect( "Some select", 'nope', { 'yeah': "Yeah!", "nope": "Nope!", "maybe": "Maybe" })) ], "Group title", "Group description") ]) time.sleep(2)
def make_event_buttons(bot, peer, msg): outpeer = bot.manager.get_outpeer(peer) history = bot.messaging.load_message_history( outpeer, limit=10, direction=messaging_pb2.LISTLOADMODE_BACKWARD).history event = pd.read_csv("Events.csv", encoding='cp1251', sep=";") list_of_events = list(event["Event"].unique()) buttons = [] for i in range(len(list_of_events)): buttons.append( interactive_media.InteractiveMedia( i, interactive_media.InteractiveMediaButton( list_of_events[i], list_of_events[i]), style='primary')) bot.messaging.send_message( peer, "Выберите мероприятие", [interactive_media.InteractiveMediaGroup(buttons)]) for msg in history: if msg.sender_uid != peer.id: return bot.messaging.update_message(msg, msg.message.textMessage.text)
def send_manager_buttons(id, peer): buttons = [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "add_guide", "Добавить гайд"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "get_user_token", "Получить ключ для приглашения Пользователя"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "get_admin_token", "Получить ключ для приглашения Офис менеджера", ), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "delete_guide", "Удалить гайд"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "get_guides", "Получить все гайды"), ), ]) ] bot.messaging.send_message(peer, "Выберите действие", buttons)
def send_manager_buttons(id, peer): buttons = [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "current", "Узнать баланс"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "add_costs", "Добавить расходы"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "listOfCosts", "Список расходов"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "add_money", "Добавить деньги"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "get_admin_token", "Получить ключ для приглашения Офис менеджера", ), ), ]) ] bot.messaging.send_message(peer, "Выберите действие", buttons)
def _get_admin_layout(): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "default_admin", interactive_media.InteractiveMediaButton( "new_guide", "Написать новый гайд")), interactive_media.InteractiveMedia( "default_admin", interactive_media.InteractiveMediaButton( "list_guides", "Список гайдов")), interactive_media.InteractiveMedia( "default_admin", interactive_media.InteractiveMediaButton( "delete_guide", "Удалить гайд")), interactive_media.InteractiveMedia( "default_admin", interactive_media.InteractiveMediaButton( "edit_guide", "Редактировать гайд")), interactive_media.InteractiveMedia( "default_admin", interactive_media.InteractiveMediaButton( "schedule", "Настроить отложенную отправку")) ]) ]
def out_cons(message, peer): global is_out_cons, file wb = openpyxl.load_workbook(filename=file) sheets = wb.sheetnames if not is_out_cons: msg = "Выберите расходный период:\n" msg += "\n".join(sheets[1:len(sheets)]) msg += "\nили нажмите кнопку 'отмена' для завершения отображения всех расходов" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) else: if message in sheets: ws = wb[message] msg = "" + str(ws['A1'].value) + " " msg += str(ws['B1'].value) + " " msg += str(ws['C1'].value) + " " msg += str(ws['D1'].value) + "\n" msg += str(ws['A2'].value) + " " msg += str(ws['B2'].value) + " " msg += str(ws['C2'].value) + " " msg += str(ws['D2'].value) + "\n" msg += str(ws['E1'].value) + " " msg += str(ws['F1'].value) + "\n" msg += str(ws['E2'].value) + " " msg += str(ws['F2'].value) + "\n" pos = len(ws['A']) for i in range(4, pos + 1): msg += str(ws['A' + str(i)].value) + ". " msg += str(ws['B' + str(i)].value) + " " msg += str(ws['C' + str(i)].value) + " " msg += str(ws['D' + str(i)].value) + "\n" bot.messaging.send_message(peer, msg) is_out_cons = False return else: msg = "Выберите расходный период:\n" msg += "\n".join(sheets[1:len(sheets)]) msg += "\nили нажмите кнопку 'отмена' для завершения отображения всех расходов" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) is_out_cons = True
def add_period(peer): if not is_adding_period[4]: msg = "Введите дату начала периода в формате '1 января 2019' " msg += "\nили нажмите кнопку 'отмена' для завершения добавления периода" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) is_adding_period[0] = True is_adding_period[4] = True
def get_scheduled_jobs_list(jobs): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "scheduled_job_list", interactive_media.InteractiveMediaSelect( jobs, label="Список отсроченных гайдов")) ]) ]
def new_form(): return [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( 21, interactive_media.InteractiveMediaButton("all", "Создать новую визитку"), 'danger' ), ] )]
def interactive_start(gid, lang): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( gid, interactive_media.InteractiveMediaButton( "Start", i18n.t(MEDIA + '.start tracking', locale=lang))), ]) ]
def on_msg(*params): print('on msg', params) #print(params[0].message.textMessage) p = params[0] if str(params[0].message.textMessage.text) == "/start": bot.messaging.send_message( params[0].peer, "Хочешь узнать что я могу?", [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("Yes", "ДА") ), interactive_media.InteractiveMedia( 2, interactive_media.InteractiveMediaButton("No", "НЕТ") ), ] )]) else: bot.messaging.send_message( params[0].peer, "Хотите забронировать аудиторию?", [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("Yes", "ДА") ), interactive_media.InteractiveMedia( 2, interactive_media.InteractiveMediaButton("No", "НЕТ") ), interactive_media.InteractiveMedia( 3, interactive_media.InteractiveMediaButton("feedback", "Запросить FEEDBACK") ), ] )] )
def get_essentialness(): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "new_guide_essential", interactive_media.InteractiveMediaButton("True", "Да")), interactive_media.InteractiveMedia( "new_guide_essential", interactive_media.InteractiveMediaButton("False", "Нет")), ]) ]
def delete_period(message, peer): global is_delete_period, file if not is_delete_period: wb = openpyxl.load_workbook(filename=file) sheets = wb.sheetnames if len(sheets) > 1: msg = "Выберите расходный период для удаления:\n" msg += "\n".join(sheets[1:len(sheets)]) msg += "\nили нажмите кнопку 'отмена' для завершения удаления периода" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) is_delete_period = True else: msg = "Добавтье хотя бы один расчетный период" msg += "\nили нажмите кнопку 'отмена' для завершения удаления периода" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) else: wb = openpyxl.load_workbook(filename=file) sheets = wb.sheetnames if message in sheets: wb.remove(wb[message]) wb.save(file) msg = "Расчетный период " + message + " удален." is_delete_period = False bot.messaging.send_message(peer, msg) else: msg = "Выберите расходный период для удаления:\n" msg += "\n".join(sheets[1:len(sheets)]) msg += "\nили нажмите кнопку 'отмена' для завершения удаления периода" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])])
def get_a(set_id, id, score): ret = [] answ = q_s.q_list[set_id][id].get_a() bId = 1 for cur in answ: ret.append( interactive_media.InteractiveMedia( str(set_id) + '.' + str(id) + '.' + str(score) + '.' + str(bId), interactive_media.InteractiveMediaButton(cur[1], cur[0]))) bId += 1 return [interactive_media.InteractiveMediaGroup(ret)]
def months_select(lang): actions = {} for month, value in MONTHS.items(): actions[month] = i18n.t("{0}.{1}".format(MONTHS_I18N, month), locale=lang) return [interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "months", interactive_media.InteractiveMediaSelect(actions, i18n.t(PHRASES + '.month', locale=lang)) ) ] )]
def quarters_select(lang): actions = {} for i in range(1, 5): actions[str(i)] = "Q{}".format(str(i)) return [interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "quarters", interactive_media.InteractiveMediaSelect(actions, i18n.t(PHRASES + '.quarter', locale=lang), i18n.t(PHRASES + '.quarter', locale=lang)) ) ] )]
def _get_user_layout(): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "default_user", interactive_media.InteractiveMediaButton( "read_guide_by_name", "Получить гайд по названию")), interactive_media.InteractiveMedia( "default_user", interactive_media.InteractiveMediaButton( "list_guides", "Список гайдов")), ]) ]
def get_guides_layout(guides: list): interactive_media_list = {} for guide in guides: interactive_media_list[str(guide.get_id())] = guide.name return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "get_guide", interactive_media.InteractiveMediaSelect( interactive_media_list, label="Выбери гайд")) ]) ]
def render_guides_buttons(peer, guides): def make_button(guide): return interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton(guide["value"], guide["title"])) buttons = [ interactive_media.InteractiveMediaGroup( [make_button(x) for x in guides]) ] bot.messaging.send_message(peer, "Выберите гайд", buttons)
def get_schedule_layout(): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "default_schedule", interactive_media.InteractiveMediaButton( "get_schedule_waitline", "Список гайдов на отправку")), interactive_media.InteractiveMedia( "default_schedule", interactive_media.InteractiveMediaButton( "add_guide_to_schedule", "Отсрочить отправку гайда")), ]) ]
def make_mark_buttons(bot, peer): global flag_mark buttons = [] for i in range(5): buttons.append( interactive_media.InteractiveMedia( str(i + 5), interactive_media.InteractiveMediaButton( "mark" + str(i + 1), str(i + 1)), style='danger')) bot.messaging.send_message( peer, "Поставь оценку от 1 - 5", [interactive_media.InteractiveMediaGroup(buttons)]) flag_mark = 0
def make_statistic_by_all_events(bot, peer): button_full_stat = interactive_media.InteractiveMediaButton( "Full_stat", "Статистика по всем мероприятиям") button_download = interactive_media.InteractiveMediaButton( "Files", "Выгрузить данные по статистике") bot.messaging.send_message(peer, " ", [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( 1, button_full_stat, style='default'), interactive_media.InteractiveMedia( 2, button_download, style='default'), ]) ])
def make_buttons_to_stat(bot, peer, event): button_plot = interactive_media.InteractiveMediaButton( event + "plot", "График оценок") button_feedbacks = interactive_media.InteractiveMediaButton( event + "feed", "Отзывы") bot.messaging.send_message(peer, "Какую статистику вы хотите?", [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia(1, button_plot, style='primary'), interactive_media.InteractiveMedia( 2, button_feedbacks, style='primary'), ]) ])
def check_group(): return [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("Yes", "Да"), 'danger' ), interactive_media.InteractiveMedia( 2, interactive_media.InteractiveMediaButton("No", "Нет, хочу внести изменения"), 'danger' ), ] )]
def interactive_reminder(lang): return [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( "hours", interactive_media.InteractiveMediaSelect( HOURS, i18n.t(MEDIA + '.hour', locale=lang), i18n.t(MEDIA + '.hour', locale=lang))), interactive_media.InteractiveMedia( "minutes", interactive_media.InteractiveMediaSelect( MINUTES, i18n.t(MEDIA + '.minute', locale=lang), i18n.t(MEDIA + '.minute', locale=lang))), ]) ]
def get_default_layout(): return [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( "main_menu", interactive_media.InteractiveMediaButton("make_review", "Оставить отзыв") ), interactive_media.InteractiveMedia( "main_menu", interactive_media.InteractiveMediaButton("create_event", "Создать новое событие") ), interactive_media.InteractiveMedia( "main_menu", interactive_media.InteractiveMediaButton("list_events", "Мои события") ) ] )]
def get_event_actions(event_id): return [interactive_media.InteractiveMediaGroup( [ interactive_media.InteractiveMedia( "event_action", interactive_media.InteractiveMediaButton(f"delete_{event_id}", "Удалить событие") ), interactive_media.InteractiveMedia( "event_action", interactive_media.InteractiveMediaButton(f"export_{event_id}", "Выгрузить отзывы о событии в табличном формате") ), interactive_media.InteractiveMedia( "cancel", interactive_media.InteractiveMediaButton("cancel", "Назад в главное меню") ) ] )]
def add_cons(peer): if not is_adding_cons[4]: wb = openpyxl.load_workbook(filename=file) sheets = wb.sheetnames if len(sheets) == 1: msg = "Добавьте хотя бы один расходный период" bot.messaging.send_message(peer, msg) else: msg = "Выберите расходный период:\n" msg += "\n".join(sheets[1:len(sheets)]) msg += "\nили нажмите кнопку 'отмена' для завершения добавления расходов" btn = interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton("отмена", "отмена")) bot.messaging.send_message( peer, msg, [interactive_media.InteractiveMediaGroup([btn])]) is_adding_cons[0] = True is_adding_cons[4] = True
def want_to_create(*params): bot.messaging.send_message( params[0].peer, "Хотите создать новую компанию в списке?", [ interactive_media.InteractiveMediaGroup([ interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "create_company", "Да"), ), interactive_media.InteractiveMedia( 1, interactive_media.InteractiveMediaButton( "not_create_company", "Нет"), ), ]) ], )