mirror of
https://gitflic.ru/project/maks1ms/ocab.git
synced 2024-12-23 16:23:01 +03:00
MVP status. Adding: auto cleaning DB, welcome message in private(PM)chat, forum type chat support, some optimization
This commit is contained in:
parent
3e10e9b806
commit
96b257fb6b
@ -6,12 +6,14 @@ import openai
|
||||
import configparser
|
||||
import sqlite3
|
||||
import asyncio
|
||||
import sys
|
||||
|
||||
from aiogram import Bot, Dispatcher, executor, types
|
||||
from aiogram.contrib.fsm_storage.memory import MemoryStorage
|
||||
from aiogram.utils.exceptions import MessageCantBeDeleted, MessageToDeleteNotFound
|
||||
|
||||
mother_path = os.path.dirname(os.path.dirname(os.getcwd()))
|
||||
sys.path.insert(1, mother_path)
|
||||
|
||||
|
||||
# Импорт переменных из файла .ini
|
||||
@ -24,6 +26,7 @@ bot_trigger_all = (config['Telegram']['bot_trigger_all']).split('|')
|
||||
# удаление лишних элементов массивов
|
||||
bot_trigger_front.remove('')
|
||||
bot_trigger_all.remove('')
|
||||
DB_message_limit = int(config['DataBase']['message_limit'])
|
||||
|
||||
# Инициализация бота
|
||||
|
||||
@ -83,8 +86,11 @@ async def delete_message(message: types.Message, sleep_time: int = 0):
|
||||
async def in_message(message: types.Message):
|
||||
chat_id = message.chat.id
|
||||
# Получение сообщений в чате, и запись их в базу данных
|
||||
# Проверка на то, что сообщение не пустое и не отправлено в чате содержащим ChatType = 1 в базе данных chatlist
|
||||
if (message.chat.type != "group" or message.chat.type != "supergroup") and \
|
||||
if (message.chat.type == "private" or message.chat.type == "channel"):
|
||||
await message.reply(
|
||||
f"{config['Telegram']['private_answer']}",
|
||||
parse_mode="Markdown")
|
||||
elif (message.chat.type != "group" or message.chat.type != "supergroup") and \
|
||||
message.text != '' and message.text != ' ' and \
|
||||
(cursor.execute("SELECT chat_role FROM chat_list WHERE chat_id;") == 1): return None
|
||||
else:
|
||||
@ -118,15 +124,17 @@ async def in_message(message: types.Message):
|
||||
if response is None:
|
||||
bot_message_id = await message.reply("Я не понял тебя, попробуй перефразировать")
|
||||
asyncio.create_task(delete_message(temp_msg, 0))
|
||||
#заносим сообщение в базу данных в качестве message_id пишем id сообщения которое отправил бот
|
||||
# заносим сообщение в базу данных в качестве message_id пишем id сообщения которое отправил бот
|
||||
cursor.execute("INSERT INTO message_list VALUES (?, ?, ?, ?)",
|
||||
(bot_message_id, "Я не понял тебя, попробуй перефразировать", 0, message.message_id))
|
||||
else:
|
||||
bot_message_id = await message.reply(response['choices'][0]['message']['content'], parse_mode="markdown")
|
||||
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 (?, ?, ?, ?)",
|
||||
(bot_message_id.message_id, response['choices'][0]['message']['content'], 0, message.message_id))
|
||||
# очищаем базу данных от старых сообщений
|
||||
cursor.execute("DELETE FROM message_list WHERE message_id < ?", (bot_message_id.message_id - DB_message_limit,))
|
||||
database.commit()
|
||||
|
||||
|
||||
|
@ -8,6 +8,12 @@ bot_trigger_front=
|
||||
# Живой пример: Арма |Армат |Арма, |
|
||||
bot_trigger_all=
|
||||
# Живой пример: @arma_ai_bot |помогите |
|
||||
private_answer=
|
||||
# Живой пример: Я не понимаю тебя, но я могу поговорить с тобой в группе [{'ArmatikChat'}](https://t.me/ArmatikChat) и ещё в некоторых других группах
|
||||
reply_ignore=0
|
||||
# По умолчанию: 0
|
||||
# Содержит в себе все id топиков чата для чатов с форумным типом, если не заполнить контекст бота СЛОМАЕТСЯ!
|
||||
# Пример заполнения для @armatikchat: 0| 643885| 476959| 1| 476977| 633077| 630664| 476966| 634567
|
||||
|
||||
[Openai]
|
||||
api_key=****
|
||||
@ -19,6 +25,10 @@ max_token_count=4000
|
||||
min_token_for_answer=800
|
||||
# минимальное количество токенов в сообщении ответа бота (чем больше, тем более длинный ответ ГАРАНТИРОВАН)
|
||||
|
||||
[DataBase]
|
||||
message_limit=3000
|
||||
# Максимальное количество сообщений в базе данных
|
||||
|
||||
[AI_Dungeon]
|
||||
use=openai
|
||||
# "openai" or "YaGPT" Пока не используется
|
Loading…
Reference in New Issue
Block a user