diff --git a/packages/sdk/examples/ai.ts b/packages/sdk/examples/ai.ts new file mode 100644 index 0000000..6f43f71 --- /dev/null +++ b/packages/sdk/examples/ai.ts @@ -0,0 +1,39 @@ +import { HctvSdk } from "../src"; + +const botToken = process.env.BOT_TOKEN; +const aiToken = process.env.AI_TOKEN; +if (!botToken) { + throw new Error('BOT_TOKEN environment variable is required'); +} +if (!aiToken) { + throw new Error('AI_TOKEN environment variable is required'); +} + +const sdk = new HctvSdk({ botToken: botToken }) + +await sdk.chat.connect('bot-playground') +console.log('connected to the chat!') + +sdk.chat.onMessage(async m => { + if (!m.message.startsWith('/ai')) return; + const res = await fetch('https://ai.hackclub.com/proxy/v1/chat/completions', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${aiToken}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + model: 'google/gemini-3-flash-preview', + messages: [ + { role: 'system', content: 'You are a helpful assistant. Reply concisely and like if you were on a chat platform. Use lowercase.' }, + { role: 'user', content: m.message.replace('/ai', '').trim() } + ], + }), + }); + const data = await res.json(); + const aiMessage = data.choices?.[0]?.message?.content; + + if (aiMessage) { + sdk.chat.sendMessage(`@${m.username} ${aiMessage}`); + } +}) \ No newline at end of file