-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
66 lines (53 loc) · 1.55 KB
/
server.js
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
import 'dotenv/config'
// Recommended Bot API framework by Telegram: https://core.telegram.org/bots/tutorial#introduction
import { Bot } from 'grammy'
import OpenAI from 'openai'
import { MongoClient } from 'mongodb'
const setUser = () => {
const user = {
telegramID: '',
telegramMessage: '',
chatGPTResponse: ''
}
return user
}
const getResponseFromChatGPT = async (messageFromTelegram) => {
const chatGPT = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
})
const messageParameters = {
messages: [{ role: 'user', content: messageFromTelegram }],
model: 'gpt-3.5-turbo'
};
const chatGPTResponse = await chatGPT.chat.completions.create(messageParameters)
return chatGPTResponse
}
const saveConversationToMongoDB = async ({
telegramID,
telegramMessage,
chatGPTResponse
}) => {
const mongoDBClient = new MongoClient(process.env.MONGODB_CONNECTION_STRING);
const mongoDBResponse = await mongoDB.db('testbot').collection('testbot-collection').insertOne({
userid: telegramID,
prompt: telegramMessage,
response: chatGPTResponse
})
}
const motherJob = async () => {
try {
const user = setUser()
const telegramBot = new Bot(process.env.TELEGRAM_TOKEN)
telegramBot.on("message:text", async (ctx) => {
user.telegramID = ctx.from.id
user.telegramMessage = ctx.message.text
user.chatGPTResponse = 'Message received.' // await getResponseFromChatGPT(user.telegramMessage)
await saveConversationToMongoDB(user)
ctx.reply(user.chatGPTResponse)
})
telegramBot.start()
} catch (error) {
console.log(error)
}
}
motherJob()