armyan update
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ package-lock.json
|
|||||||
*.ogg
|
*.ogg
|
||||||
*.wav
|
*.wav
|
||||||
*.mp3
|
*.mp3
|
||||||
|
*.oga
|
||||||
75
bot.js
75
bot.js
@@ -1,6 +1,9 @@
|
|||||||
import TelegramBot from "node-telegram-bot-api";
|
import TelegramBot from "node-telegram-bot-api";
|
||||||
import dotenv from "dotenv";
|
import dotenv from "dotenv";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
import FormData from 'form-data';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
|
||||||
import { UserRepository } from "./user.repository.js";
|
import { UserRepository } from "./user.repository.js";
|
||||||
|
|
||||||
@@ -24,6 +27,11 @@ bot.onText(/\/info/, (msg)=>{
|
|||||||
bot.sendMessage(chatId, message)
|
bot.sendMessage(chatId, message)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
bot.onText(/\/armyan (.+)/, async(msg, match)=>{
|
||||||
|
const chatId = msg.chat.id;
|
||||||
|
const textAfterCommand = match[1];
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
bot.onText(/\/start/, async(msg) => {
|
bot.onText(/\/start/, async(msg) => {
|
||||||
const chatId = msg.chat.id;
|
const chatId = msg.chat.id;
|
||||||
@@ -46,22 +54,61 @@ bot.on('message', async(msg) => {
|
|||||||
const chatId = msg.chat.id;
|
const chatId = msg.chat.id;
|
||||||
|
|
||||||
const user = msg.from
|
const user = msg.from
|
||||||
|
console.log(user)
|
||||||
|
console.log(msg)
|
||||||
|
|
||||||
if (msg.text && msg.text.startsWith('/')) {
|
if (msg.text && msg.text.startsWith('/')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg.photo) {
|
if (msg.photo) {
|
||||||
bot.sendMessage(chatId, 'Красиво, но такое мне не надо');
|
bot.sendMessage(chatId, 'Красиво, но такое мне не надо', {reply_to_message_id: msg.message_id});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg.document) {
|
if (msg.document) {
|
||||||
bot.sendMessage(chatId, 'Такое мне не надо');
|
bot.sendMessage(chatId, 'Такое мне не надо', {reply_to_message_id: msg.message_id});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg.text) {
|
if (msg.from.is_bot){
|
||||||
|
bot.sendMessage(chatId, 'Пошел нахуй бот ебанный, не мешай слушать брата', {reply_to_message_id: msg.message_id});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.voice ){
|
||||||
|
const fileId = msg.voice.file_id;
|
||||||
|
|
||||||
|
const filePath = await bot.downloadFile(fileId, './voices');
|
||||||
|
|
||||||
|
const form = new FormData();
|
||||||
|
form.append('file', fs.createReadStream(filePath));
|
||||||
|
|
||||||
|
const response = await axios.post(
|
||||||
|
'http://10.8.1.2:3000/upload',
|
||||||
|
form,
|
||||||
|
{
|
||||||
|
headers: form.getHeaders()
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if(response.status === 200){
|
||||||
|
const recognizedText = response.data.text;
|
||||||
|
bot.sendMessage(chatId, recognizedText, {reply_to_message_id: msg.message_id});
|
||||||
|
}else{
|
||||||
|
bot.sendMessage(chatId, 'Что-то пошло не так', {reply_to_message_id: msg.message_id});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.text && user.id === 5536333712){
|
||||||
|
console.log('Армянин, переключаем модель')
|
||||||
|
const response = await switchToRussian(msg.text);
|
||||||
|
bot.sendMessage(chatId, response.message, {reply_to_message_id: msg.message_id});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.text && msg.chat.type === 'private') {
|
||||||
//bot.sendMessage(chatId, `Ты написал: ${msg.text}`);
|
//bot.sendMessage(chatId, `Ты написал: ${msg.text}`);
|
||||||
try{
|
try{
|
||||||
const last_msg_context = await UserRepository.getContext(user.id) || ''
|
const last_msg_context = await UserRepository.getContext(user.id) || ''
|
||||||
@@ -84,6 +131,28 @@ bot.on('message', async(msg) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
async function switchToRussian(message){
|
||||||
|
try{
|
||||||
|
const options = {
|
||||||
|
method:'POST',
|
||||||
|
url:`https://agent.timeweb.cloud/api/v1/cloud-ai/agents/${accessId}/call`,
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${tokenAi}`,
|
||||||
|
'x-proxy-source': '',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
data:{
|
||||||
|
message: `Убери ошибки в тексте и поставь знаки препинания: "${message}". Если текст короткий или без явных ошибок ничего не делай и отвечай просто "Армянин молодец", особо не размышляй над содержимым текста, просто выполняй свою задачу. Так же делай рядом версию с переводом на армянский язык`,
|
||||||
|
parent_message_id: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const response = await axios.request(options);
|
||||||
|
return response.data;
|
||||||
|
}catch(err){
|
||||||
|
console.error('Ошибка при получении ответа от AI:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function getAIResponse(message, context) {
|
async function getAIResponse(message, context) {
|
||||||
try{
|
try{
|
||||||
const options = {
|
const options = {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
"cors": "^2.8.6",
|
"cors": "^2.8.6",
|
||||||
"dotenv": "^17.2.3",
|
"dotenv": "^17.2.3",
|
||||||
"express": "^5.2.1",
|
"express": "^5.2.1",
|
||||||
|
"form-data": "^4.0.5",
|
||||||
"jsonwebtoken": "^9.0.3",
|
"jsonwebtoken": "^9.0.3",
|
||||||
"multer": "^2.0.2",
|
"multer": "^2.0.2",
|
||||||
"node-telegram-bot-api": "^0.67.0",
|
"node-telegram-bot-api": "^0.67.0",
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ async function shneine(fileName, mimeType){
|
|||||||
model: "gemini-3-flash-preview",
|
model: "gemini-3-flash-preview",
|
||||||
contents: createUserContent([
|
contents: createUserContent([
|
||||||
createPartFromUri(myfile.uri, myfile.mimeType),
|
createPartFromUri(myfile.uri, myfile.mimeType),
|
||||||
'Нужно сделать анализ аудиофайла, краткую выжимку самого важного, вывести тезисы.'
|
'Что дословно говорится в этом аудиофайле? отвечай сухо, чисто текст, может исправить ошибки в тексте и поставить знаки препинания. Если звуковая дорожка маленькая 1-2 секунды и в ней нету слов или не понятна, отвечай "Армянин молодец, напердел". Так же делай рядом версию с переводом на армянский язык'
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
return response.text;
|
return response.text;
|
||||||
@@ -82,5 +82,9 @@ router.post(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
router.post('/voice', async(req, res) => {
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user