Beispiel #1
0
async def react(m: MessageEvent):
    """
    Reacts to callback buttons
    """
    logging.info(
        f'{m.object.user_id}[{m.object.peer_id}] PAYLOAD {m.object.payload}')
    pl = m.object.payload
    p_id = m.object.peer_id
    e = None  # Event data
    u = await get_user(
        p_id
    )  # Cannot be None since user gets keyboard after being added to local database
    g = None
    if u is None:
        e = await sb_builder(
            '❗ Зарегистрируйтесь.\nКоманда со списком групп: /группы')
        await bp.api.messages.send_message_event_answer(
            m.object.event_id, m.object.user_id, m.object.peer_id, e)
        stats.cincr()
        return
    elif u.is_banned:
        return
    g = u.group_peer_id  # Just to make things shorter
    if pl == bt_cl_td.payload:
        await bp.api.messages.send(peer_id=m.object.peer_id,
                                   message=classes.get_classes(g,
                                                               as_list=False),
                                   random_id=0)  # Random ID can be 0 for bots
    elif pl == bt_cl_tmrw.payload:
        await bp.api.messages.send(peer_id=m.object.peer_id,
                                   message=classes.get_classes(g,
                                                               1,
                                                               as_list=False),
                                   random_id=0)
    elif pl == bt_cl_now.payload:
        e = await sb_builder(classes.get_class(g))
    elif pl == bt_cl_next.payload:
        e = await sb_builder(classes.get_class(g, 1))
    elif pl == bt_week.payload:
        e = await sb_builder(classes.get_cur_week_text())
    elif pl == bt_timetable.payload:
        e = await sb_builder(classes.time_to_next(g))
    elif pl == bt_exam.payload:
        e = await sb_builder(await exams.get_next_exam(m.object.peer_id, 1))
    await bp.api.messages.send_message_event_answer(m.object.event_id,
                                                    m.object.user_id,
                                                    m.object.peer_id, e)
    stats.cincr()
Beispiel #2
0
async def send_timing(ans: Message):
    """
    Send timing
    """
    await ans.answer(
        classes.time_to_next((await get_user(ans.peer_id)).group_peer_id))
Beispiel #3
0
 def test_get_time_to_next_after_last(self):
     """
     Must return no classes
     """
     result = time_to_next(g=0, custom_time=[17, 55])
     self.assertEqual(result, '❌ Больше пар нет')
Beispiel #4
0
 def test_get_time_to_next_during_last(self):
     """
     Must return 1m
     """
     result = time_to_next(g=0, custom_time=[17, 49])
     self.assertEqual(result, '⏰ Звонок через 1 мин.')
Beispiel #5
0
 def test_get_time_to_next_between(self):
     """
     Must return 9m
     """
     result = time_to_next(g=0, custom_time=[10, 21])
     self.assertEqual(result, '⏰ Звонок через 9 мин.')
Beispiel #6
0
 def test_get_time_to_next_during(self):
     """
     Must return 20m
     """
     result = time_to_next(g=0, custom_time=[10, 00])
     self.assertEqual(result, '⏰ Звонок через 20 мин.')
Beispiel #7
0
 def test_get_time_to_next_before(self):
     """
     Must return 1h 5m
     """
     result = time_to_next(g=0, custom_time=[7, 55])
     self.assertEqual(result, '⏰ Звонок через 1 ч. 5 мин.')