aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands.py2
-rw-r--r--helpers.py14
-rw-r--r--main.py18
-rw-r--r--supergenerator.py11
4 files changed, 32 insertions, 13 deletions
diff --git a/commands.py b/commands.py
index 3c4b60c..69fa03d 100644
--- a/commands.py
+++ b/commands.py
@@ -197,7 +197,7 @@ async def config_handler(message: Message):
f"🤝 *конфиг узбекгпт*:\n`MAX_CONTEXT` = `{MAX_CONTEXT}`\n`MAX_PROMPT` = `{MAX_PROMPT}`\n"
f"`DEFAULT_MODEL` = `{DEFAULT_MODEL}`\n`IMAGE_MODEL` = `{IMAGE_MODEL}`\n"
f"`DEFAULT_STREAM` = `{DEFAULT_STREAM}`\n"
- "если нужно что-то изменить здесь, то обратитесь к владельцу бота🥺"
+ "/settings для изменения настроек!"
)
else:
if SHOW_ACC_MSG:
diff --git a/helpers.py b/helpers.py
index 9b37ec3..fde738b 100644
--- a/helpers.py
+++ b/helpers.py
@@ -9,14 +9,18 @@ from supergenerator import *
def is_blocked(user_id):
current_time = time.time()
- if user_id:
- if not user_id in last_command_time:
- last_command_time[user_id] = current_time - 3
- time_diff = current_time - last_command_time[user_id]
+ if user_id and user_id in last_command_time:
+ time_diff = current_time - last_command_time[user_id][0]
if time_diff < 3:
alo = "🚫 *файл не вошёл.* хватит так быстро слать свои сообщения.\n" \
f"подожди {round(3 - time_diff, 3)} секунд, брат😡😡"
- return alo, True
+ elif last_command_time[user_id][1] and time_diff < 10:
+ alo = "🚫 *файл не вошёл.* я ещё не сгенерировал прошлое сообщение.\n" \
+ f"подожди {round(10 - time_diff, 3)} секунд, чтобы я закрыл глаза " \
+ "на это da."
+ else:
+ return "", False
+ return alo, True
return "", False
diff --git a/main.py b/main.py
index 0d45504..8f08674 100644
--- a/main.py
+++ b/main.py
@@ -93,10 +93,13 @@ async def guest_middleware(handler, event, data):
if not is_replied_bot(message, is_channel, user_text, config) and event.message:
return
-
+
+ # снизу очень важный кусок кода!! у нас же async бот да ну вот
+ # если переслать несколько сообщений то удасться обойти ограничение
+ # по задержке между генерациями и поэтому тут такое решение
+ # скоро это будет нормально реализовано. ждите.
if user_id:
- if is_channel:
- await asyncio.sleep(uniform(0,1))
+ await asyncio.sleep(uniform(0,1))
text, blocked = is_blocked(user_id)
if blocked:
@@ -120,7 +123,7 @@ async def guest_middleware(handler, event, data):
ensure_user(user_id)
- last_command_time[user_id] = current_time
+ last_command_time[user_id] = [current_time, True]
msg = None
replied = message.reply_to_message or None
@@ -307,6 +310,8 @@ async def guest_middleware(handler, event, data):
add_one_to("stats/guest")
else:
return
+
+ last_command_time[user_id][1] = False
try:
if event.guest_message:
@@ -392,13 +397,16 @@ async def chosen_inline_result_handler(chosen_result: ChosenInlineResult):
inline_message_id=inline_message_id
)
return
- last_command_time[user_id] = current_time
+
+ last_command_time[user_id] = [current_time, True]
+
if inline_message_id:
try:
result = await generate(
prompt=chosen_result.query[:MAX_PROMPT],
user_id=chosen_result.from_user.id,
)
+ last_command_time[user_id][1] = False
except Exception as e:
error = parse_response(str(e))
await bot.edit_message_text(
diff --git a/supergenerator.py b/supergenerator.py
index 83c359b..f63e00a 100644
--- a/supergenerator.py
+++ b/supergenerator.py
@@ -202,8 +202,15 @@ async def generate(
text = ""
add_one_to("stats/gens")
-
- client = providers[model[0]]
+
+ try:
+ client = providers[model[0]]
+ except Exception:
+ text = "произошла ошибка, возможные проблемы:\n" \
+ "1. у вас выбрана удалённая модель или провайдер\n" \
+ "2. конфиг бота настроен неправильно и надо связаться с хостом бота"
+ return text
+
text = await openai_generate_text(
oai=client,
bot=bot,