Skip to content

Commit

Permalink
Merge pull request #4 from Sergey-Lekomtsev/main
Browse files Browse the repository at this point in the history
postjs, getchatid
  • Loading branch information
gHashTag authored Jul 4, 2024
2 parents b7ce729 + 34efd8b commit 6d93cfb
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 2 deletions.
72 changes: 72 additions & 0 deletions supabase/functions/_shared/openai/createQuestion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { model_ai } from "../constants.ts"
import { openai } from "./client.ts"


export async function createQuestion(
language_code: string,
) {
try {
const systemPrompt = `Пожалуйста, создайте очень сложный вопрос с множественным выбором, связанный со следующими темами JavaScript для теста, а также Правильный ответ и три неправильных ответа, Пояснение к правильному ответу или почему другие варианты неверны. 0-50 символов. Ответ дай в формате JSON. Эти темы следующие:
* Привет, Мир
* Комментарии
* Переменные
* Типы данных
* Ошибки
* Струны
* Цифры
* Правда или ложь?
* Функции
* Объекты
* Преобразование и приведение типов
* Область Действия Блока
* Параметры по умолчанию
* Регулярные выражения
* Конструкция корпуса переключателя
* Циклы
* Массивы
* Отдых и распространение
* карта, фильтр, уменьшение
* Деструктурирование
* Закрытие
* Функции более высокого порядка
* Классы
* Запрет на "это"
* Цикл событий
* Обещание
* Fetch API
* Асинхронное Ожидание
* Импорт Экспорт
Формат твоего ответа:
{"question": "question",
"a": "first option",
"b": "second option",
"c": "third option",
"correct": "номер правильного ответа. Начинаем с 0. Если a, то 0, b, то 1, если c, то 2",
"explanation": "Пояснение к правильному ответу или почему другие варианты неверны. 0-50 символов"
}
Вариантов ответа всегда 3: a,b,c. Ответь на языке ${language_code}.
`

const chatCompletion = await openai.chat.completions.create({
messages: [ {
role: "system",
content: systemPrompt,
}, {
role: "assistant",
content: "Ответ дай в формате JSON, без лишнего форматирования. Не используй markdown"
}],
model: model_ai,
stream: false,
temperature: 0.1,
})

console.log(chatCompletion)

return chatCompletion.choices[0].message.content;
} catch (e) {
throw new Error("Error_createQuestion",e)
}
}
41 changes: 39 additions & 2 deletions supabase/functions/ai-koshey/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// deno-lint-ignore-file
// Setup type definitions for built-in Supabase Runtime APIs
/// <reference types="https://esm.sh/@supabase/functions-js/src/edge-runtime.d.ts" />
/// <reference types="https://esm.sh/v135/@supabase/functions-js@2.4.1/src/edge-runtime.d.ts" />

import {
Context,
Expand All @@ -10,13 +11,15 @@ import {
import { checkSubscription } from "../check-subscription.ts";
import { delay } from "../_shared/constants.ts";
import { createUser } from "../_shared/nextapi/index.ts";
import { createQuestion } from "../_shared/openai/createQuestion.ts";
import {
AiKosheyContext,
botAiKoshey,
botUsername,
bugCatcherRequest,
handleUpdateAiKoshey,
} from "../_shared/telegram/bots.ts";

import {
checkAndReturnUser,
checkUsernameCodes,
Expand All @@ -40,7 +43,6 @@ import {
} from "../_shared/supabase/passport.ts";
import { PassportUser, RoomNode } from "../_shared/types/index.ts";
import {
createVoiceSyncLabs,
getAiFeedbackFromSupabase,
} from "../_shared/supabase/ai.ts";
import { createVideo } from "../_shared/heygen/index.ts";
Expand Down Expand Up @@ -694,6 +696,34 @@ botAiKoshey.command("bots", async (ctx) => {
return;
});

botAiKoshey.command("getchatid", async (ctx) => {
await ctx.replyWithChatAction("typing");
if (!ctx.from) throw new Error("User not found");
const lang = await isRu(ctx)
const chatId = ctx.message?.chat.id
await ctx.reply(lang ? `Текущий id чата: ${chatId}` : `Current chat id: ${chatId}`)
return
})

botAiKoshey.command("postjs", async (ctx) => {
await ctx.replyWithChatAction("typing");
if (!ctx.from) throw new Error("User not found");
const lang = await isRu(ctx)
const chatId = "1852726961";
const answer = await createQuestion(ctx.from?.language_code || "ru")
if (!answer) throw new Error("Answer not found")
console.log(answer)
const {question, a, b, c, correct: correct_option_id, explanation} = JSON.parse(answer)
await ctx.api.sendPoll(chatId,
question,
[a, b, c],
{
correct_option_id,
explanation: explanation
})
return
})

botAiKoshey.command("soul", async (ctx) => {
await ctx.replyWithChatAction("typing");
if (!ctx.from) throw new Error("User not found");
Expand Down Expand Up @@ -1207,6 +1237,7 @@ botAiKoshey.on("message:voice", async (ctx) => {
});

botAiKoshey.on("message:text", async (ctx: Context) => {
if (ctx.message?.text?.startsWith("/")) return ;
await ctx.replyWithChatAction("typing");
const inviter = ctx?.message?.text;
const message = ctx.update.message;
Expand Down Expand Up @@ -2178,8 +2209,14 @@ await botAiKoshey.api.setMyCommands([
command: "/python",
description: "🐍 Learn Python",
},
{
command: "/getchatid",
description: "Get chat ID",
}
]);



botAiKoshey.catch((err) => {
const ctx = err.ctx;
console.error(`Error while handling update ${ctx.update.update_id}:`);
Expand Down

0 comments on commit 6d93cfb

Please sign in to comment.