Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 60 additions & 17 deletions bot/handlers.py
Original file line number Diff line number Diff line change
@@ -1,49 +1,91 @@
from aiogram import Router
from aiogram import Router, F
from aiogram.fsm.context import FSMContext
from aiogram.types import Message,FSInputFile
from aiogram.types import Message,FSInputFile,ReplyKeyboardRemove
from aiogram.filters import Command
from aiogram.fsm.state import State, StatesGroup

from keyboards.main import keyboard_main
from keyboards.keyboards import get_main_keyboard
from keyboards.setLanguage import languagekb
from modules.generateVocal import generateVocal
from models.ModelForm import Form
from models.ModelText2ImageAPI import Text2ImageAPI

import modules.translateText as TF

from modules.generateImage import generateImage
from apiRequests.generateText import generateText
import os


router = Router()

class LanguageState(StatesGroup):
CHOSENLANGUAGE = State()

@router.message(Command("start"))
async def start_handler(msg: Message):
await msg.answer("Привет! Я могу сгенерировать вокал!🎤🎧", reply_markup=keyboard_main)
async def cmd_start(msg: Message, state: FSMContext):
await msg.delete()
await msg.answer("Hello, setup my language!", reply_markup=languagekb)
await state.set_state(LanguageState.CHOSENLANGUAGE)

@router.message(lambda message: message.text == "У меня уже есть текст🎶")
async def request_text(msg: Message, state: FSMContext):
await msg.answer("Отправьте мне текст")
@router.message(LanguageState.CHOSENLANGUAGE)
async def choose_language(msg: Message,state: FSMContext):
if msg.text == "English 🇬🇧":
lang = 'en'
await msg.answer(await TF.translation("Вы успешно установили язык!",lang),reply_markup=ReplyKeyboardRemove())
await state.update_data(Lang = lang)
await start_handler(msg, state)

elif msg.text in "Russian 🇷🇺":
lang = 'ru'
await msg.answer(await TF.translation("Вы успешно установили язык!",lang),reply_markup=ReplyKeyboardRemove())
await state.update_data(Lang = lang)
await start_handler(msg, state)

@router.message(LanguageState.CHOSENLANGUAGE)
async def start_handler(msg: Message,state: FSMContext):
data = await state.get_data()
lang = data.get('Lang')
await msg.answer(await TF.translation("Привет! Я могу сгенерировать вокал!🎤🎧", lang), reply_markup=get_main_keyboard(lang))
await state.clear()
await state.update_data(Lang=lang)

@router.message(lambda message: message.text in ["У меня уже есть текст🎶", "I already have text🎶"])
async def request_text(msg: Message, state: FSMContext):
data = await state.get_data()
lang = data.get('Lang')
await msg.answer(await TF.translation("Отправьте мне текст", lang))
await state.update_data(Lang=lang)
await state.set_state(Form.waiting_for_text)

@router.message(Form.waiting_for_text)
async def generate(msg: Message, state: FSMContext):
data = await state.get_data()
lang = data.get('Lang')
voice_file = await generateVocal(msg.text)
await msg.answer("⚙️⚙️⚙️*Погодите*...*Я сочиняю*...⚙️⚙️️⚙️",parse_mode="Markdown")
await msg.answer_voice(voice=FSInputFile(voice_file),caption="Сгенерированный вокал")
await msg.answer(await TF.translation("⚙️⚙️⚙️*Погодите*...*Я сочиняю*...⚙️⚙️️⚙️",lang),parse_mode="Markdown")
await msg.answer_voice(voice=FSInputFile(voice_file),caption= await TF.translation("Cгенерированный вокал",lang))
await state.update_data(Lang=lang)
await state.clear()

@router.message(lambda message: message.text == "Генерация с нуля🎹")
async def request_text(msg: Message):
await msg.answer("Напишите, о чем должен быть текст?", parse_mode="Markdown")
@router.message(lambda message: message.text in ["Генерация с нуля🎹", "Generation from scratch🎹"])
async def request_text(msg: Message, state: FSMContext):
data = await state.get_data()
lang = data.get('Lang')
await msg.answer(await TF.translation("Напишите, о чем должен быть текст?", lang), parse_mode="Markdown")
await state.update_data(Lang=lang)
@router.message()
async def receive_text(msg: Message):
text = msg.text
genText = f'{generateText(text)}'
await msg.answer(genText, parse_mode="Markdown")


@router.message(lambda message: message.text == "Генерация")
async def request_text(msg: Message):
await msg.answer("⚙️⚙️⚙️*Погодите*...*Я творю*...⚙️⚙️️⚙️", parse_mode="Markdown")
@router.message(lambda message: message.text in ["Генерация", "Generation"])
async def request_text(msg: Message, state: FSMContext):
data = await state.get_data()
lang = data.get('Lang')
await msg.answer(await TF.translation("⚙️⚙️⚙️*Погодите*...*Я творю*...⚙️⚙️️⚙️", lang), parse_mode="Markdown")

api_kandinsky = Text2ImageAPI('https://api-key.fusionbrain.ai/',
api_key=os.getenv("api_key"),
Expand All @@ -53,4 +95,5 @@ async def request_text(msg: Message):
generated_images = api_kandinsky.check_generation(prompt)
photos = await generateImage(generated_images, msg.from_user.username)
if photos:
await msg.answer_photo(photo=photos[0], caption="Вот ваша обложка")
await msg.answer_photo(photo=photos[0], caption= await TF.translation("Вот ваша обложка",lang))
await state.update_data(Lang=lang)
38 changes: 38 additions & 0 deletions bot/keyboards/keyboards.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from aiogram.types import KeyboardButton, ReplyKeyboardMarkup

btn1 = KeyboardButton(text="У меня уже есть текст🎶")
btn2 = KeyboardButton(text="Генерация с нуля🎹")
btn3 = KeyboardButton(text="Генерация")

btn4 = KeyboardButton(text="I already have the text🎶")
btn5 = KeyboardButton(text="Generation from scratch🎹")
btn6 = KeyboardButton(text="Generation")

keyboard_main_ru = ReplyKeyboardMarkup(
keyboard=[[btn1, btn2, btn3]],
resize_keyboard=True,
),
keyboard_main_eng = ReplyKeyboardMarkup(
keyboard=[[btn4, btn5, btn6]],
resize_keyboard=True,
)

def get_main_keyboard(lang='ru'):
if lang == 'en':
return ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="I already have text🎶")],
[KeyboardButton(text="Generation from scratch🎹")],
[KeyboardButton(text="Generation")],
],
resize_keyboard=True
)
else: # Russian by default
return ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="У меня уже есть текст🎶")],
[KeyboardButton(text="Генерация с нуля🎹")],
[KeyboardButton(text="Генерация")],
],
resize_keyboard=True
)
12 changes: 0 additions & 12 deletions bot/keyboards/main.py

This file was deleted.

7 changes: 7 additions & 0 deletions bot/keyboards/setLanguage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from aiogram.types import KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove

rus = KeyboardButton(text="English 🇬🇧")
eng = KeyboardButton(text="Russian 🇷🇺")

languagekb = ReplyKeyboardMarkup(keyboard=[[rus,eng]], resize_keyboard=True,
input_field_placeholder="Choose your language")
13 changes: 13 additions & 0 deletions bot/modules/translateText.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from googletrans import Translator
import asyncio


async def translation(text, language):
translator = Translator(service_urls=[
'translate.google.com',
'translate.google.co.kr',
])

translated = await asyncio.get_event_loop().run_in_executor(None, lambda: translator.translate(text, dest=language))

return translated.text
Binary file modified requirements.txt
Binary file not shown.