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())
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" )
async def querymc_cmd(msg: Message): try: _, addr = msg.parse_entities().split(' ', 1) except ValueError: await msg.answer( "Использование: " "<code>/querymc " "<IP_Сервера>[:<Порт_Query>]" "</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")
async def pingmc_cmd(msg: Message): try: _, addr = msg.parse_entities().split(' ', 1) except ValueError: await msg.answer( "Использование: " "<code>/pingmc " "<IP_Сервера>[:<Порт>]" "</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")
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()