добавил мут систему, обновил api, сделал запоминание контекста.
This commit is contained in:
@@ -2,6 +2,7 @@ from aiogram.utils import executor
|
|||||||
from loguru import logger
|
from loguru import logger
|
||||||
from aiogram import Bot, Dispatcher, types
|
from aiogram import Bot, Dispatcher, types
|
||||||
from functions import get_audio_messages_func, create_statistic, openai_answer
|
from functions import get_audio_messages_func, create_statistic, openai_answer
|
||||||
|
import json
|
||||||
|
|
||||||
bot = Bot(token="5941118321:AAG0g0keLrlnuH_9U9X6ehpFFAdOX38qeXI") # создаю объект бота
|
bot = Bot(token="5941118321:AAG0g0keLrlnuH_9U9X6ehpFFAdOX38qeXI") # создаю объект бота
|
||||||
dp = Dispatcher(bot) # создаю объект слушателя
|
dp = Dispatcher(bot) # создаю объект слушателя
|
||||||
@@ -31,29 +32,26 @@ async def statistic(message: types.Message):
|
|||||||
await bot.send_message(message.chat.id, "У вас нет прав на просмотр статистики")
|
await bot.send_message(message.chat.id, "У вас нет прав на просмотр статистики")
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['response'])
|
|
||||||
async def answer(message: types.Message):
|
|
||||||
openai_answer.get_response(message)
|
|
||||||
await message.answer_document(open("response_ru.txt", "rb"), reply=True)
|
|
||||||
await message.answer_document(open("resource_ru_not_translate.txt", "rb"), reply=True)
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['r'])
|
@dp.message_handler(commands=['r'])
|
||||||
async def r(message: types.Message):
|
async def r(message: types.Message):
|
||||||
import openai
|
await openai_answer.get_response_to_openai(message, bot)
|
||||||
openai.api_key = "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"
|
|
||||||
response = openai.Completion.create(
|
|
||||||
model="text-davinci-003",
|
@dp.message_handler(commands=['r_clear'])
|
||||||
prompt=' '.join(message.text.split()[1:]),
|
async def r_clear(message: types.Message):
|
||||||
temperature=0.5,
|
await openai_answer.clear_db(message)
|
||||||
max_tokens=1000,
|
|
||||||
top_p=1.0,
|
|
||||||
frequency_penalty=0.5,
|
@dp.message_handler(content_types=['text'])
|
||||||
presence_penalty=0.0
|
async def not_work_user(message: types.Message):
|
||||||
)
|
if str(message.from_user.id) == "620318992" and message.text == "Гена, бань его нахуй" and message.reply_to_message:
|
||||||
for i in response['choices']:
|
with open('not_work_user.json', 'r') as f:
|
||||||
await bot.send_message(message.chat.id, f"ChatGPT\n{i['text']}",
|
data = json.load(f)
|
||||||
parse_mode=None, reply_to_message_id=message.message_id)
|
data['chat_gpt'].append(message.reply_to_message.from_user.id)
|
||||||
|
with open('not_work_user.json', 'w') as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
await message.reply(f"@{message.reply_to_message.from_user.username} "
|
||||||
|
f"вы больше не можете со мной разговаривать")
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(content_types=['voice', 'video_note', 'video']) # обрабатываю голосовые сообщения, кружки, видео
|
@dp.message_handler(content_types=['voice', 'video_note', 'video']) # обрабатываю голосовые сообщения, кружки, видео
|
||||||
@@ -63,4 +61,5 @@ async def get_audio_messages(message: types.Message):
|
|||||||
|
|
||||||
def start_work_bot(): # функция запуска бота
|
def start_work_bot(): # функция запуска бота
|
||||||
logger.info("Бот запустился") # записываю логи
|
logger.info("Бот запустился") # записываю логи
|
||||||
executor.start_polling(dp, skip_updates=False) # запускаю pooling без пропуска пропущенных сообщений
|
executor.start_polling(dp, skip_updates=True) # запускаю pooling без пропуска пропущенных сообщений
|
||||||
|
|
||||||
|
|||||||
+76
-19
@@ -1,14 +1,71 @@
|
|||||||
|
import json
|
||||||
from aiogram import types
|
from aiogram import types
|
||||||
|
import sqlite3
|
||||||
|
import openai
|
||||||
|
|
||||||
|
|
||||||
|
async def get_response_to_openai(message: types.Message, bot):
|
||||||
|
if message.from_user.id in json.load(open("not_work_user.json"))["chat_gpt"]:
|
||||||
|
await bot.send_message(message.chat.id, "ПИШЁВ ТИ НАХУЙ")
|
||||||
|
return
|
||||||
|
conn = sqlite3.connect('db.sql')
|
||||||
|
cur = conn.cursor()
|
||||||
|
openai.api_key = "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"
|
||||||
|
try:
|
||||||
|
points = cur.execute("SELECT * FROM 'f'".replace("f", str(message.from_user.id))).fetchall()
|
||||||
|
message_send = []
|
||||||
|
for i in points:
|
||||||
|
message_send.append({"role": i[1], "content": i[2]})
|
||||||
|
message_send.append({"role": "user", "content": ' '.join(message.text.split()[1:])})
|
||||||
|
except sqlite3.OperationalError:
|
||||||
|
message_send = [{"role": "user", "content": ' '.join(message.text.split()[1:])}]
|
||||||
|
print(message_sendко)
|
||||||
|
response = openai.ChatCompletion.create(
|
||||||
|
model="gpt-3.5-turbo",
|
||||||
|
messages=message_send,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=1000,
|
||||||
|
top_p=1.0,
|
||||||
|
frequency_penalty=0.5,
|
||||||
|
presence_penalty=0.0
|
||||||
|
)
|
||||||
|
await bot.send_message(message.chat.id, f"ChatGPT\n{response['choices'][0]['message']['content']}",
|
||||||
|
parse_mode=None, reply_to_message_id=message.message_id)
|
||||||
|
try:
|
||||||
|
cur.execute("INSERT INTO 'f' (role, content) VALUES (?, ?)".replace("f", str(message.from_user.id)),
|
||||||
|
("user", ' '.join(message.text.split()[1:])))
|
||||||
|
cur.execute("INSERT INTO 'f' (role, content) VALUES (?, ?)".replace("f", str(message.from_user.id)),
|
||||||
|
("assistant", response['choices'][0]['message']['content']))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
except sqlite3.OperationalError:
|
||||||
|
cur.execute(f"CREATE TABLE IF NOT EXISTS '{message.from_user.id}' (id INTEGER PRIMARY KEY AUTOINCREMENT"
|
||||||
|
f" UNIQUE NOT NULL, role STRING NOT NULL,"
|
||||||
|
f" content STRING NOT NULL)")
|
||||||
|
cur.execute("INSERT INTO 'f' (role, content) VALUES (?, ?)".replace("f", str(message.from_user.id)),
|
||||||
|
("user", ' '.join(message.text.split()[1:])))
|
||||||
|
cur.execute("INSERT INTO 'f' (role, content) VALUES (?, ?)".replace("f", str(message.from_user.id)),
|
||||||
|
("assistant", response['choices'][0]['message']['content']))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
async def clear_db(message: types.Message):
|
||||||
|
conn = sqlite3.connect('db.sql')
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute(f"DELETE FROM '{str(message.from_user.id)}'")
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def get_response(message: types.Message):
|
def get_response(message: types.Message):
|
||||||
answer_en = get_translation(' '.join(message.text.split()[1:]), "en")
|
answer_en = get_translation(' '.join(message.text.split()[1:]), "en")
|
||||||
print(answer_en)
|
# print(answer_en)
|
||||||
response_en = get_response_to_openai(answer_en)
|
# response_en = get_response_to_openai(answer_en)
|
||||||
print(response_en)
|
# print(response_en)
|
||||||
response_ru = get_translation(response_en, "ru")
|
# response_ru = get_translation(response_en, "ru")
|
||||||
resource_ru_not_translate = get_response_to_openai(' '.join(message.text.split()[1:]))
|
# resource_ru_not_translate = get_response_to_openai(' '.join(message.text.split()[1:]))
|
||||||
save_file(response_ru, resource_ru_not_translate)
|
# save_file(response_ru, resource_ru_not_translate)
|
||||||
|
|
||||||
|
|
||||||
def get_translation(text, language):
|
def get_translation(text, language):
|
||||||
@@ -16,19 +73,19 @@ def get_translation(text, language):
|
|||||||
return GoogleTranslator(target=language).translate(text)
|
return GoogleTranslator(target=language).translate(text)
|
||||||
|
|
||||||
|
|
||||||
def get_response_to_openai(text):
|
# def get_response_to_openai(text):
|
||||||
import openai
|
# import openai
|
||||||
openai.api_key = "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"
|
# openai.api_key = "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"
|
||||||
response = openai.Completion.create(
|
# response = openai.Completion.create(
|
||||||
model="text-davinci-003",
|
# model="text-davinci-003",
|
||||||
prompt=text,
|
# prompt=text,
|
||||||
temperature=0.5,
|
# temperature=0.5,
|
||||||
max_tokens=1000,
|
# max_tokens=1000,
|
||||||
top_p=1.0,
|
# top_p=1.0,
|
||||||
frequency_penalty=0.5,
|
# frequency_penalty=0.5,
|
||||||
presence_penalty=0.0
|
# presence_penalty=0.0
|
||||||
)
|
# )
|
||||||
return response['choices'][0]['text']
|
# return response['choices'][0]['text']
|
||||||
|
|
||||||
|
|
||||||
def save_file(response_ru, resource_ru_not_translate):
|
def save_file(response_ru, resource_ru_not_translate):
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"chat_gpt": [
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user