-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
103 lines (70 loc) · 3.27 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import telebot
from openai import OpenAI
import time
from io import BytesIO
from gtts import gTTS
from config import TOKENT
from config import gptApi
from pathlib import Path
bot = telebot.TeleBot(TOKENT)
client = OpenAI(api_key=gptApi)
user_states = {} # Состояния пользователей (включено/выключено взаимодействие)
@bot.message_handler(commands=['start'])
def start(message):
first_name = message.from_user.first_name
bot.send_message(message.chat.id, f"Здравствуйте {first_name}, я ваш личнй ассистент. Чем могу помочь?\n\nopen source at <no link>")
time.sleep(2)
bot.send_message(message.chat.id, 'Введите /help для подробной информации')
@bot.message_handler(commands=['help'])
def help(message):
bot.send_message(message.chat.id, 'Основные комманды:\n/image: для генерации фото \n /tts: Создать речь из текста (папример /tts hello)\n/help: показать справочное сообщение/ ')
@bot.message_handler(commands=['tts'])
def text_to_speech(message):
command_parts = message.text.split(maxsplit=1)
if len(command_parts) < 2 or not command_parts[1].strip():
bot.send_message(message.chat.id, "Вы не ввели текст для преобразования в речь.")
return
prompt = command_parts[1].strip()
bot.send_message(message.chat.id, "Пожалуйста, подождите...")
try:
# Генерация речи
tts = gTTS(text=prompt, lang='ru')
temp_file = BytesIO()
tts.write_to_fp(temp_file)
temp_file.seek(0)
# Отправка голосового сообщения
bot.send_voice(message.chat.id, temp_file)
except Exception as e:
bot.send_message(message.chat.id, f"Ошибка: {str(e)}")
@bot.message_handler(commands=['image'])
def img_generate(message):
command_parts = message.text.split(maxsplit=1)
# Проверка на наличие текста в аргументе
if len(command_parts) < 2 or not command_parts[1].strip():
bot.send_message(message.chat.id, "Вы не ввели описание для генерации фото. Пожалуйста, укажите описание.")
return
# Получаем текст после команды /image
prompt = command_parts[1].strip()
bot.send_message(message.chat.id, "Пожалуйста, подождите...")
response = client.images.generate(
prompt=prompt,
size="1024x1024",
quality="standard",
n=1,
)
bot.send_photo(message.chat.id, response.data[0].url)
@bot.message_handler(content_types=['text'])
def assistant(message):
prompt = message.text
response = client.completions.create(
model='text-davinci-003',
prompt= prompt,
max_tokens=4000,
temperature=0.7,
n=1,
stop=None
)
assistant_reply = response.choices[0].text
# Отправка ответа от ассистента
bot.send_message(message.chat.id, f"Ответ ассистента: {assistant_reply}")
bot.polling(none_stop=True)