mirror of
https://gitflic.ru/project/alt-gnome/karkas.git
synced 2024-12-24 00:33:06 +03:00
MVP status. Fix context bug and add typing indicator.
This commit is contained in:
parent
b5e08b19e8
commit
83e92c445f
@ -13,6 +13,7 @@ database = sqlite3.connect(os.path.join(mother_path, 'DataBase/OCAB_DB.db'))
|
|||||||
cursor = database.cursor()
|
cursor = database.cursor()
|
||||||
reply_ignore = config['Telegram']['reply_ignore'].split('| ')
|
reply_ignore = config['Telegram']['reply_ignore'].split('| ')
|
||||||
reply_ignore = list(map(int, reply_ignore))
|
reply_ignore = list(map(int, reply_ignore))
|
||||||
|
#print(reply_ignore)
|
||||||
|
|
||||||
min_token_for_answer = int(config['Openai']['min_token_for_answer'])
|
min_token_for_answer = int(config['Openai']['min_token_for_answer'])
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ def openai_response(message_formated_text):
|
|||||||
#print(message_formated_text)
|
#print(message_formated_text)
|
||||||
count_length = 0
|
count_length = 0
|
||||||
for message in message_formated_text:
|
for message in message_formated_text:
|
||||||
print(message["content"])
|
#print(message["content"])
|
||||||
count_length += len(message["content"])
|
count_length += len(message["content"])
|
||||||
#print(count_length)
|
#print(count_length)
|
||||||
try:
|
try:
|
||||||
@ -77,8 +78,10 @@ def sort_message_from_user(message_formated_text, message_id):
|
|||||||
count_length = 0
|
count_length = 0
|
||||||
for message in message_formated_text:
|
for message in message_formated_text:
|
||||||
count_length += len(message['content'])
|
count_length += len(message['content'])
|
||||||
if count_length > max_token_count-min_token_for_answer:
|
while count_length > max_token_count-min_token_for_answer:
|
||||||
message_formated_text.pop(1)
|
message_formated_text.pop(1)
|
||||||
|
for message in message_formated_text:
|
||||||
|
count_length += len(message['content'])
|
||||||
return message_formated_text
|
return message_formated_text
|
||||||
|
|
||||||
def openai_collecting_message(message_id, message_formated_text):
|
def openai_collecting_message(message_id, message_formated_text):
|
||||||
|
@ -103,32 +103,41 @@ async def in_message(message: types.Message):
|
|||||||
database.commit()
|
database.commit()
|
||||||
# Обработка сообщения OpenAI
|
# Обработка сообщения OpenAI
|
||||||
send_answer = False
|
send_answer = False
|
||||||
|
typing_mode = False
|
||||||
# импортируем массив триггеров из файла .ini
|
# импортируем массив триггеров из файла .ini
|
||||||
if message.reply_to_message and message.reply_to_message.from_user.id == (await bot.me).id:
|
if message.reply_to_message and message.reply_to_message.from_user.id == (await bot.me).id:
|
||||||
send_answer = True
|
send_answer = True
|
||||||
|
typing_mode = True
|
||||||
for trigger in bot_trigger_all:
|
for trigger in bot_trigger_all:
|
||||||
if trigger.lower() in message.text.lower():
|
if trigger.lower() in message.text.lower():
|
||||||
send_answer = True
|
send_answer = True
|
||||||
|
typing_mode = False
|
||||||
for trigger in bot_trigger_front:
|
for trigger in bot_trigger_front:
|
||||||
if message.text.lower().startswith(trigger.lower()):
|
if message.text.lower().startswith(trigger.lower()):
|
||||||
send_answer = True
|
send_answer = True
|
||||||
|
typing_mode = False
|
||||||
|
|
||||||
if send_answer:
|
if send_answer:
|
||||||
your_id = message.from_id
|
if typing_mode is False:
|
||||||
your_name = message.from_user.username
|
your_id = message.from_id
|
||||||
temp_msg = await message.reply(
|
your_name = message.from_user.username
|
||||||
f"[{your_name}](tg://user?id={str(your_id)}), Подожди немного и я обязательно отвечу тебе!",
|
temp_msg = await message.reply(
|
||||||
parse_mode="Markdown")
|
f"[{your_name}](tg://user?id={str(your_id)}), Подожди немного и я обязательно отвечу тебе!",
|
||||||
|
parse_mode="Markdown")
|
||||||
|
# Пишем что бот печатает
|
||||||
|
await bot.send_chat_action(message.chat.id, "typing")
|
||||||
response = openai_message_processing(message.message_id)
|
response = openai_message_processing(message.message_id)
|
||||||
if response is None:
|
if response is None:
|
||||||
bot_message_id = await message.reply("Я не понял тебя, попробуй перефразировать")
|
bot_message_id = await message.reply("Я не понял тебя, попробуй перефразировать")
|
||||||
asyncio.create_task(delete_message(temp_msg, 0))
|
if typing_mode is False:
|
||||||
|
asyncio.create_task(delete_message(temp_msg, 0))
|
||||||
# заносим сообщение в базу данных в качестве message_id пишем id сообщения которое отправил бот
|
# заносим сообщение в базу данных в качестве message_id пишем id сообщения которое отправил бот
|
||||||
cursor.execute("INSERT INTO message_list VALUES (?, ?, ?, ?)",
|
cursor.execute("INSERT INTO message_list VALUES (?, ?, ?, ?)",
|
||||||
(bot_message_id, "Я не понял тебя, попробуй перефразировать", 0, message.message_id))
|
(bot_message_id, "Я не понял тебя, попробуй перефразировать", 0, message.message_id))
|
||||||
else:
|
else:
|
||||||
bot_message_id = await message.reply(response['choices'][0]['message']['content'], parse_mode="markdown")
|
bot_message_id = await message.reply(response['choices'][0]['message']['content'], parse_mode="markdown")
|
||||||
asyncio.create_task(delete_message(temp_msg, 0))
|
if typing_mode is False:
|
||||||
|
asyncio.create_task(delete_message(temp_msg, 0))
|
||||||
# заносим сообщение в базу данных в качестве message_id мы пишем id сообщения в bot_message_id
|
# заносим сообщение в базу данных в качестве message_id мы пишем id сообщения в bot_message_id
|
||||||
cursor.execute("INSERT INTO message_list VALUES (?, ?, ?, ?)",
|
cursor.execute("INSERT INTO message_list VALUES (?, ?, ?, ?)",
|
||||||
(bot_message_id.message_id, response['choices'][0]['message']['content'], 0, message.message_id))
|
(bot_message_id.message_id, response['choices'][0]['message']['content'], 0, message.message_id))
|
||||||
|
Loading…
Reference in New Issue
Block a user