async def directors_reply(message: Message):
    """When director replied to message from user."""
    ids = get_ids_from_text_mentions(message.reply_to_message)

    if len(ids) < 1:
        return

    await message.bot.send_message(
        chat_id=ids[0],
        **MessageFromChat('Директорат', message.parse_entities()).as_dict())
예제 #2
0
async def me_cmd(msg: Message):
    await msg.delete()
    print(msg.get_command())
    _, action = msg.parse_entities().split(' ', 1)
    await msg.answer(f"<pre>* "
                     f"{msg.from_user.full_name} "
                     f"{action}"
                     f"</pre>",
                     parse_mode="HTML"
                     )
예제 #3
0
async def querymc_cmd(msg: Message):
    try:
        _, addr = msg.parse_entities().split(' ', 1)
    except ValueError:
        await msg.answer(
            "Использование: "
            "<code>/querymc "
            "&lt;IP_Сервера&gt;[:&lt;Порт_Query&gt;]"
            "</code>", "HTML")
    else:
        msg = await msg.answer("⌛️ Пингую...")
        server = MinecraftServer.lookup(addr)
        try:
            query = server.query()
        except socket.timeout:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Таймаут)</i>", "HTML")
        except ConnectionResetError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Удаленный хост принудительно "
                "разорвал существующее подключение)"
                "</i>", "HTML")
        except ConnectionRefusedError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Подключение не установлено, т.к. "
                "конечный хост отверг запрос на подключение)"
                "</i>", "HTML")
        except ConnectionAbortedError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Установленное соединение было прервано "
                "программным обеспечением на вашем "
                "хост-компьютере)"
                "</i>", "HTML")
        else:
            online = str(query.players.online)
            maxonline = str(query.players.max)
            if not query.players.names:
                await msg.edit_text(
                    "🎾 <b>Сервер включен.</b>"
                    f"\n * Онлайн: <i>{online}"
                    f" из {maxonline}</i>", "HTML")
            else:
                playerlist = ""
                for playername in query.players.names:
                    playerlist += f"<code>{playername}</code> "
                await msg.edit_text(
                    "🎾 <b>Сервер включен.</b>"
                    f"\n * Онлайн: <i>{online}"
                    f" из {maxonline}</i>"
                    f"\n * Игроки: {playerlist}", "HTML")
예제 #4
0
async def pingmc_cmd(msg: Message):
    try:
        _, addr = msg.parse_entities().split(' ', 1)
    except ValueError:
        await msg.answer(
            "Использование: "
            "<code>/pingmc "
            "&lt;IP_Сервера&gt;[:&lt;Порт&gt;]"
            "</code>", "HTML")
    else:
        msg = await msg.answer("⌛️ Пингую...")
        server = MinecraftServer.lookup(addr)
        try:
            status = server.status()
        except socket.timeout:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Таймаут)</i>", "HTML")
        except ConnectionResetError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Удаленный хост принудительно "
                "разорвал существующее подключение)"
                "</i>", "HTML")
        except ConnectionRefusedError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Подключение не установлено, т.к. "
                "конечный хост отверг запрос на подключение)"
                "</i>", "HTML")
        except ConnectionAbortedError:
            await msg.edit_text(
                "🏐 <b>Сервер выключен.</b> "
                "<i>(Установленное соединение было прервано "
                "программным обеспечением на вашем "
                "хост-компьютере)"
                "</i>", "HTML")
        else:
            online = str(status.players.online)
            maxonline = str(status.players.max)
            vername = str(status.version.name)
            latency = str(status.latency)
            await msg.edit_text(
                "🎾 <b>Сервер включен.</b>"
                f"\n * Онлайн: <i>{online} из {maxonline}</i>"
                f"\n * Версия сервера: <i>{vername}</i>"
                f"\n * Задержка: <i>{latency}</i>", "HTML")
예제 #5
0
async def enter_text(message: Message, state: FSMContext):
    try:
        caption = message.caption
    except:
        caption = 'Свяжись с создателем: @gergoltz'
    try:
        data = await state.get_data()
        answer = data.get('markup').split(sep='\n')
        keyboard = InlineKeyboardMarkup()
        row = 0
        for i in answer:
            btn_text = i.split(sep=',,')
            if int(btn_text[0]) > row:
                keyboard.row(
                    InlineKeyboardButton(text=btn_text[1], url=btn_text[2]))
                row += 1
            else:
                keyboard.insert(
                    InlineKeyboardButton(text=btn_text[1], url=btn_text[2]))
    except:
        keyboard = InlineKeyboardMarkup()
    print(message.entities)
    file_id = 'Свяжись с создателем: @gergoltz'
    text = 'Свяжись с создателем: @gergoltz'
    mtype = message.content_type
    if message.reply_markup:
        keyboard = message.reply_markup
    if message.caption_entities:
        caption = message.parse_entities()
    if mtype == ContentType.VIDEO:
        file_id = message.video.file_id
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_video(video=file_id,
                                     chat_id=user,
                                     caption=caption,
                                     reply_markup=keyboard,
                                     parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    elif mtype == ContentType.VIDEO_NOTE:
        file_id = message.video_note.file_id
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_video_note(video_note=file_id,
                                          chat_id=user,
                                          reply_markup=keyboard,
                                          parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    elif mtype == ContentType.ANIMATION:
        file_id = message.animation.file_id
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_animation(animation=file_id,
                                         chat_id=user,
                                         caption=caption,
                                         reply_markup=keyboard,
                                         parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    elif mtype == ContentType.DOCUMENT:
        file_id = message.document.file_id
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_document(document=file_id,
                                        chat_id=user,
                                        caption=caption,
                                        reply_markup=keyboard,
                                        parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    elif mtype == ContentType.PHOTO:
        file_id = message.photo[-1].file_id
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_photo(photo=file_id,
                                     chat_id=user,
                                     caption=caption,
                                     reply_markup=keyboard,
                                     parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    elif mtype == ContentType.TEXT:
        text = message.text
        if message.entities:
            text = message.parse_entities()
        users = await give_list()
        undelivered = 0
        for user in users:
            try:
                await bot.send_message(chat_id=user,
                                       text=text,
                                       reply_markup=keyboard,
                                       parse_mode='HTML')
                await sleep(0.3)
            except:
                undelivered += 1
                await del_from_db(user)
                raise
        await message.answer(
            "Рассылка выполнена. Недоставлено сообщений : {}".format(
                undelivered))

    else:
        await message.answer(
            'Этот тип файла не поддерживается. Свяжись с @gergoltz'.format(
                text),
            reply_markup=InlineKeyboardMarkup(inline_keyboard=[[
                InlineKeyboardButton(text='Исправляем',
                                     callback_data='delivery_1')
            ], [
                InlineKeyboardButton(text='Отмена', callback_data='adm_cancel')
            ]]))
    await state.reset_state()