import time import requests from aiogram.methods import AnswerGuestQuery, SendPoll from aiogram.types import InlineQueryResultArticle, InputTextMessageContent, InputRichMessageContent, InputRichMessage, Message from aiogram.enums import ChatType from supergenerator import * def is_blocked(user_id): current_time = time.time() if user_id and user_id in last_command_time: time_diff = current_time - last_command_time[user_id][0] if user_id in last_error_time: time_error_diff = current_time - last_error_time[user_id] else: last_error_time[user_id] = current_time time_error_diff = 1984 if time_diff < 3: alo = "🚫 *файл не вошёл.* хватит так быстро слать свои сообщения.\n" \ f"подожди {round(3 - time_diff, 3)} секунд, брат😡😡" elif last_command_time[user_id][1] and time_diff < 5: alo = "🚫 *файл не вошёл.* я ещё не сгенерировал прошлое сообщение.\n" \ f"подожди {round(10 - time_diff, 3)} секунд, чтобы я закрыл глаза " \ "на это da." elif len(last_command_time[user_id][2]) > 1 and time_diff > 5: last_command_time[user_id] = [current_time, False, []] return "", False elif len(last_command_time[user_id][2]) > 1: alo = "🚫 *файл не вошёл.* хватит так быстро слать свои сообщения." else: return "", False if time_error_diff < 2: return "", True else: last_error_time[user_id] = current_time return alo, True return "", False def is_replied_bot(message, is_channel, user_text, config=None): if message.chat.type in [ChatType.GROUP, ChatType.SUPERGROUP, ChatType.CHANNEL]: if not is_channel: is_reply_to_bot = ( message.reply_to_message and message.reply_to_message.from_user and message.reply_to_message.from_user.is_bot and message.reply_to_message.from_user.username == BOT_USERNAME ) if config: if config.get("call") == "da": mentions_bot = any( user_text.lower().split(" ", 1)[0] == call for call in BOT_CALLS ) for call in BOT_CALLS: if call.startswith("@"): if call.lower() in user_text.lower(): mentions_bot = True else: mentions_bot = False else: mentions_bot = any( user_text.lower().startswith(call.lower()) for call in BOT_CALLS ) for call in BOT_CALLS: if call.startswith("@"): if call.lower() in user_text.lower(): mentions_bot = True if not (is_reply_to_bot or mentions_bot): return False return True async def g_answer( message, text, title="da", id="1", parse_mode="Markdown", reply_markup=None, user_id=None ): input_message_content = InputTextMessageContent( message_text=text, parse_mode=parse_mode ) if user_id: config = get_user_config(user_id) if config["markdown"] == "new": input_message_content=InputRichMessageContent( rich_message=InputRichMessage(markdown=text) ) return await message.answer_guest_query( result=InlineQueryResultArticle( id=id, reply_markup=reply_markup, title=title, input_message_content=input_message_content ) ) async def answer_poll( data, message, question, options, is_anonymous=True, poll_type="regular", allows_multiple_answers=False, correct_option_id=None, user_id=None ): return await data["bot"]( SendPoll( chat_id=user_id, question=question, options=options, is_anonymous=is_anonymous, type=poll_type, allows_multiple_answers=allows_multiple_answers, correct_option_id=correct_option_id, ) ) def send_to_vosk(audio): files = { "audio": ( "voice.ogg", audio, "audio/ogg" ) } r = requests.post( VOSK_API, files=files, timeout=15 ) return r.json() async def mans(message, text): if message.guest_query_id: return await message.answer_guest_query( result=InlineQueryResultArticle( id=1, reply_markup=None, title="da", input_message_content=InputTextMessageContent( message_text=text, parse_mode="Markdown" ) ) ) else: return await message.reply(text)