Untitled
unknown
plain_text
3 years ago
2.9 kB
7
Indexable
import os
from datetime import datetime
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import openai
import json
# Set the current working directory to the directory of the script
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# Load OpenAI API request config and Telegram token
with open("config.json") as f:
config = json.load(f)
openai.api_key = config["openai_key"]
bot = Bot(token=config["telegram_token"])
dp = Dispatcher(bot)
# Create a folder for chat history
HISTORY_FOLDER = 'history'
if not os.path.exists(HISTORY_FOLDER):
os.makedirs(HISTORY_FOLDER)
async def send_welcome(message: types.Message):
keyboard = types.InlineKeyboardMarkup()
author_button = types.InlineKeyboardButton(text="Автор", url="https://t.me/crap536")
keyboard.add(author_button)
await message.answer("Добро пожаловать в ChatGPT! Я являюсь языковой моделью, обученной OpenAI. Не стесняйтесь спрашивать меня о чем угодно, и я сделаю все возможное, чтобы дать полезный ответ.", reply_markup=keyboard)
@dp.message_handler(commands=['start'])
async def start_command_handler(message: types.Message):
await send_welcome(message)
@dp.message_handler()
async def handle_message(message: types.Message):
answer = ""
if message.text:
user_id = str(message.chat.id)[-1] # Get the last digit of the user's id
print(f"User: {message.chat.first_name} {message.chat.last_name}: {message.text}")
# Add message to chat history
now = datetime.now()
history_file = f"{HISTORY_FOLDER}/{message.chat.id}.txt"
with open(history_file, 'a') as f:
f.write(f"{now.strftime('%Y-%m-%d %H:%M:%S')} User {user_id}: {message.text}\n")
# Send request to OpenAI API
response = openai.Completion.create(
engine=config["openai_engine"],
prompt=message.text,
max_tokens=config["openai_max_tokens"],
temperature=config["openai_temperature"]
)
answer = response['choices'][0]['text'].strip()
if answer:
await message.answer(answer)
# Add response to chat history
with open(history_file, 'a') as f:
f.write(f"{now.strftime('%Y-%m-%d %H:%M:%S')} ChatGPT {user_id}: {answer}\n")
else:
await message.answer("Я не смог найти ответ на ваш вопрос, попробуйте переформулировать вопрос.")
print(f"Bot: {answer}")
print(f"Бот успешно запущен!\n\nЛог сообщений:")
executor.start_polling(dp)
Editor is loading...