Skip to content

Commit 62de321

Browse files
committed
improved interaction with user
1 parent 28bf5c3 commit 62de321

3 files changed

Lines changed: 32 additions & 6 deletions

File tree

lib/chatbot.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class ChatBot {
99
this.lang = 'ukrainian'; // Default language
1010
}
1111

12-
static getTextData(lang) {
13-
return languages[lang] || languages['english'];
12+
getTextData(lang) {
13+
return languages[lang] || languages[this.lang];
1414
}
1515

1616
async start(ctx) {
@@ -28,6 +28,8 @@ class ChatBot {
2828

2929
async showQuestion(ctx) {
3030
const textData = this.getTextData(this.lang);
31+
// eslint-disable-next-line camelcase
32+
const options = { reply_markup: { remove_keyboard: true } };
3133
if (ctx.session.test.length === 0) {
3234
await ctx.reply(textData.wait_moment);
3335
const prediction = await this.api.ai.predict({
@@ -39,7 +41,7 @@ class ChatBot {
3941
}
4042
const question = ctx.session.actualField;
4143
if (question.type === 'text' || question.type === 'input') {
42-
return await ctx.reply(question.description);
44+
return await ctx.reply(question.description, options);
4345
}
4446
if (question.type === 'choice') {
4547
const markups = Object.values(question.choices).map((choice) =>
@@ -58,6 +60,7 @@ class ChatBot {
5860
if (ctx.message.text === '/stop') return ctx.scene.leave();
5961
if (ctx.message.text === '/language') {
6062
await ctx.scene.leave();
63+
// cohesion
6164
const languagesMarkups = Object.keys(languages).map((name) =>
6265
Markup.button.callback(name, name),
6366
);

main.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const endpoints = {
1515

1616
// TODO //
1717
// - remove cohesion between ChatBot and Telegraf
18+
// rewrite static to use camelcase
1819
// deploy
1920

2021
(async () => {
@@ -26,11 +27,17 @@ const endpoints = {
2627
const bot = new Telegraf(process.env.BOT_TOKEN);
2728
const formScene = new Scenes.BaseScene('form');
2829
const chatBot = new ChatBot({ api, staticApi });
30+
// eslint-disable-next-line camelcase
31+
const options = { reply_markup: { remove_keyboard: true } };
2932

3033
formScene.enter(async (ctx) => await chatBot.start(ctx));
3134
const listener = async (ctx) => await chatBot.handleField(ctx);
3235
formScene.on('text', listener);
3336
formScene.on('message', listener);
37+
formScene.leave(async (ctx) => {
38+
await ctx.reply(languages[ctx.session.lang].leave, options);
39+
await ctx.reply(languages[ctx.session.lang].help);
40+
});
3441
const stage = new Scenes.Stage([formScene]);
3542

3643
bot.use(session());
@@ -65,6 +72,13 @@ const endpoints = {
6572
},
6673
description: 'Language command',
6774
},
75+
{
76+
command: 'help',
77+
action: async (ctx) => {
78+
await ctx.reply(languages[ctx.session.lang].getHelp);
79+
},
80+
description: 'Help command',
81+
},
6882
];
6983

7084
bot.telegram.setMyCommands(commands);

static/languages.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
"choose_one": "Please pick one of the options below: 😊",
88
"choose_options": "Kindly choose one of the options available! 😊",
99
"bye": "Take care and see you next time! 👋",
10-
"done": "That's it! Thanks a lot! 🎉"
10+
"done": "That's it! Thanks a lot! 🎉",
11+
"leave": "Goodbye! See you next time! 👋",
12+
"help": "Type /help to get help and see how we can help you! 😉",
13+
"getHelp": "Here is how we can help you: \n\n1. /start - Start the conversation \n2. /stop - Exit the conversation \n3. /language - Change the language \n4. /help - Get help"
1114
},
1215
"russian": {
1316
"publicity": "Ваша реклама могла бы быть здесь! 🌟",
@@ -17,7 +20,10 @@
1720
"choose_one": "Выберите, пожалуйста, один из вариантов: 😊",
1821
"choose_options": "Пожалуйста, выберите один из предложенных вариантов! 😊",
1922
"bye": "Берегите себя! До встречи! 👋",
20-
"done": "Все готово! Спасибо большое! 🎉"
23+
"done": "Все готово! Рад был тебя слышать! 🎉",
24+
"leave": "До свидания! До встречи! 👋",
25+
"help": "Введите /help, чтобы получить помощь и узнать, как мы можем помочь вам! 😉",
26+
"getHelp": "Здесь все, что может тебе помочь: \n\n1. /start - Начать разговор \n2. /stop - Завершить разговор \n3. /language - Изменить язык \n4. /help - Получить помощь"
2127
},
2228
"ukrainian": {
2329
"publicity": "Ваша реклама може бути тут! 🌟",
@@ -27,6 +33,9 @@
2733
"choose_one": "Будь ласка, оберіть один з варіантів: 😊",
2834
"choose_options": "Просимо вибрати один з доступних варіантів! 😊",
2935
"bye": "Бережіть себе! До нових зустрічей! 👋",
30-
"done": "Все готово! Дуже дякуємо! 🎉"
36+
"done": "Все готово! Рад був тебе чути! 🎉",
37+
"leave": "До зустрічі! До нових зустрічей! 👋",
38+
"help": "Введіть /help, щоб отримати допомогу та дізнатися, як ми можемо допомогти вам! 😉",
39+
"getHelp": "Все, що може тебi допомогти: \n\n1. /start - Почати розповідь \n2. /stop - Завершити розповідь \n3. /language - Змінити мову \n4. /help - Отримати допомогу"
3140
}
3241
}

0 commit comments

Comments
 (0)