165 lines
5.1 KiB
Python
165 lines
5.1 KiB
Python
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)
|
|
|