-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
66 lines (51 loc) · 1.71 KB
/
index.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
require('dotenv').config('/.env');
// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow').v2beta1;
const dialogflowClient = new dialogflow.SessionsClient();
// Define session path
// var sessionPath =
const knowbase = new dialogflow.KnowledgeBasesClient();
const knowledgeBasePath = knowbase.knowledgeBasePath(
process.env.PROJECT_ID,
"ODM1Mzk3NzE5NzY1NjAxNDg0OA"
);
const Discord = require('discord.js');
const discordClient = new Discord.Client();
discordClient.on('ready', () => {
console.log('Ready!');
});
discordClient.on('message', m => {
if (!shouldBeInvoked(m)) {
return;
}
const message = remove(discordClient.user.username, m.cleanContent);
if (message === 'help') {
return m.channel.send(process.env.DISCORD_HELP_MESSAGE);
}
const dialogflowRequest = {
session: dialogflowClient.sessionPath(process.env.PROJECT_ID, "discordbot"),
queryInput: {
text: {
text: message,
languageCode: 'en-US',
},
},
queryParams: {
knowledgeBaseNames: [knowledgeBasePath],
}
};
dialogflowClient.detectIntent(dialogflowRequest).then(responses => {
// console.log(responses);
m.channel.send(responses[0].queryResult.fulfillmentText);
}).catch(err => console.log(err));
});
function shouldBeInvoked(message) {
return (message.content.startsWith(process.env.DISCORD_PREFIX) ||
message.content.startsWith('@' + discordClient.user.username) ||
message.channel.type === 'dm') &&
discordClient.user.id !== message.author.id;
}
function remove(username, text) {
return text.replace('@' + username + ' ', '').replace(process.env.DISCORD_PREFIX + ' ', '');
}
discordClient.login(process.env.DISCORD_TOKEN);