示例#1
0
async def stop_chat(message: types.Message, state: FSMContext):
    """Меняет status на '0' или 'False'.
    Также очищает partner_chatID.
    Как и в функции finding, возможно нужен вызов db.add_user"""

    partner_id = get_partner_id(message.from_user.id)
    if partner_id is None:
        await stop_searching_partner(message.from_user.id)
        await ActiveState.default.set()
        await message.answer(MESSAGES['stop_searching'])
    else:
        await ChatState.stop_chat_process.set()
        await message.answer(MESSAGES['sure_stop_chat'], parse_mode='html')
示例#2
0
async def accept_stop(message: types.Message, state: FSMContext):
    if message.text.lower() == 'yep':
        partner_id = get_partner_id(message.from_user.id)
        await stop_room_chat(message.from_user.id, partner_id)
        banner = await get_tg_banner()
        ad = random.randint(1, 2)
        await ActiveState.default.set()
        await state.storage.set_state(user=partner_id,
                                      state=ActiveState.default.state)
        await message.answer(MESSAGES['stop_1'] +
                             (('\n\n' + banner) if banner and ad == 1 else ''))
        await bot.send_message(
            partner_id, MESSAGES['stop_2'] +
            (('\n\n' + banner) if banner and ad == 1 else ''))
    else:
        await ChatState.default.set()
        await message.answer(MESSAGES['continue_chat'])
示例#3
0
async def punishment_confirm(callback_query: types.CallbackQuery,
                             state: FSMContext):
    """ Иммитация функции которая будет принимать ответ: что делать с пользователем
    Это callback-data который в себе принесёт: report_id, terms (срок бана)
    """

    await callback_query.message.delete_reply_markup()
    data_type, msg_id, report_id, reason, term = callback_query.data.split('.')

    if data_type == 'pns':
        try:
            reason, user_id = await ban_user(report_id, 10)
            await state.storage.set_state(user=user_id,
                                          state=BanState.default.state)
            patner_id = get_partner_id(user_id)
            if patner_id:
                await state.storage.set_state(user=patner_id,
                                              state=ActiveState.default.state)
                await bot.send_message(partner_id, MESSAGES['stop_2'])
                logging.info(
                    f' Disconnect: [ID:{user_id}] and [ID:{partner_id}]')

            await bot.edit_message_text(text='Пользователь был забанен',
                                        chat_id=callback_query.from_user.id,
                                        message_id=msg_id)
            await bot.send_message(
                user_id,
                f'Вам ограничено использование бота на {term} дней по причине: {reason}'
            )

        except UserAlreadyBanned:
            await bot.send_message(callback_query.from_user.id,
                                   'Пользователь уже находится в бане')

        except Exception as ex:
            logging.error(
                f'Error при попытке добавить пользователя в бан: {ex}')
            await bot.send_message(callback_query.from_user.id,
                                   'Не удалось забанить пользователя')

    elif data_type == 'pnsnot':
        await bot.delete_message(callback_query.from_user.id, msg_id)
        await bot.send_message(callback_query.from_user.id,
                               'Наказание отменено')
示例#4
0
async def report_callback_button(callback_query: types.CallbackQuery,
                                 state: FSMContext):
    await bot.answer_callback_query(callback_query.id)
    _, reason, report_id = callback_query.data.split('.')
    file_id = await send_report(report_id=report_id, reason=reason)
    user_id = callback_query.from_user.id

    # оставлю пока пересылку сообщения в бот
    await bot.send_voice(chat_id=-1001540464961, voice=file_id)
    await bot.send_message(user_id, MESSAGES['report_accepted'])
    await bot.delete_message(user_id, callback_query.message.message_id)

    partner_id = get_partner_id(user_id)
    log.info(f' Report: [ID:{user_id}] send report for user [ID:{partner_id}]')
    await stop_room_chat(user_id, partner_id)
    await ActiveState.default.set()
    await state.storage.set_state(user=partner_id,
                                  state=ActiveState.default.state)
    await bot.send_message(user_id, MESSAGES['stop_1'])
    await bot.send_message(partner_id, MESSAGES['stop_2'])
示例#5
0
async def voice_messages_sender(message: types.voice):
    """Обработчик войсов, пересылка сообщения если чат установлен, и ответ, если чата нет"""

    partner_id = get_partner_id(message.from_user.id)
    await bot.send_voice(partner_id, message.voice.file_id)