Skip to content

Commit

Permalink
Merge pull request #98 from danbilokha/feature/dbilokha/viber
Browse files Browse the repository at this point in the history
Feature/dbilokha/viber
  • Loading branch information
danbilokha committed May 7, 2020
2 parents 2ca3aeb + 2797711 commit 9f99fe0
Show file tree
Hide file tree
Showing 70 changed files with 2,810 additions and 530 deletions.
Binary file added assets/cover_image.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@
"node-schedule": "^1.3.2",
"node-telegram-bot-api": "^0.40.0",
"node-telegram-keyboard-wrapper": "^2.0.1",
"node-url-shortener": "^1.0.1",
"nodemon": "^2.0.2",
"stringify-object": "^3.3.0",
"table": "^5.4.6",
"viber-bot": "^1.0.16",
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-node-externals": "^1.7.2",
Expand Down
8 changes: 4 additions & 4 deletions server/src/bots/telegram/botResponse/actionsResponse.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import * as TelegramBot from 'node-telegram-bot-api';
import { getCloseActionMessage } from '../../../messages/feature/actionsMessages';

export const closeActionResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const closeActionResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
user,
chatId,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
return bot.sendMessage(
chatId,
getCloseActionMessage(user.settings?.locale)
Expand Down
4 changes: 2 additions & 2 deletions server/src/bots/telegram/botResponse/adviceResponse.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { CallBackQueryHandlerWithCommandArgument } from '../models';
import { TelegramCallBackQueryHandlerWithCommandArgument } from '../models';
import * as TelegramBot from 'node-telegram-bot-api';
import { getAdviceMessage } from '../../../messages/feature/adviceMessages';

export const showAdvicesHowToBehaveResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const showAdvicesHowToBehaveResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
user,
chatId,
Expand Down
14 changes: 7 additions & 7 deletions server/src/bots/telegram/botResponse/assistantResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ import {
noAnswersOnQuestionMessage,
} from '../../../messages/feature/assistantMessages';
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import * as TelegramBot from 'node-telegram-bot-api';
import { catchAsyncError } from '../../../utils/catchError';
import { logger } from '../../../utils/logger';
import { LogCategory } from '../../../models/constants';
import { User } from '../../../models/user.model';

export const showAssistantFeatures: CallBackQueryHandlerWithCommandArgument = async ({
export const showAssistantFeatures: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
user,
chatId,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
const [err, knowledgebaseMeta] = await catchAsyncError(
fetchKnowledgeMetainformation()
);
Expand All @@ -50,7 +50,7 @@ export const assistantNoAnswerResponse = async ({
bot,
chatId,
user,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
return bot.sendMessage(
chatId,
noAnswersOnQuestionMessage(user.settings?.locale)
Expand All @@ -69,13 +69,13 @@ export const assistantResponse = async (
);
};

export const assistantStrategyResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const assistantStrategyResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
message,
chatId,
user,
commandParameter,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
if (!commandParameter) {
return showAssistantFeatures({ bot, message, chatId, user });
}
Expand Down
8 changes: 4 additions & 4 deletions server/src/bots/telegram/botResponse/availableResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ import { getAvailableCountries } from '../../../services/domain/covid19';
import { Country } from '../../../models/country.models';
import { getShowCountriesMessage } from '../../../messages/feature/availableMessages';
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import * as TelegramBot from 'node-telegram-bot-api';

export const showAvailableCountriesResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const showAvailableCountriesResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
chatId,
user,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
const countries: Array<Country> = await getAvailableCountries();
return bot.sendMessage(
chatId,
Expand Down
12 changes: 6 additions & 6 deletions server/src/bots/telegram/botResponse/countriesResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import {
getCountriesInlineKeyboard,
} from '../services/keyboard';
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import {
getContinentOverallInformation,
Expand All @@ -32,7 +32,7 @@ export const countriesForContinentResponse = async ({
user,
chatId,
commandParameter,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
const { countriesSituation } = await getContinentOverallInformation(
commandParameter
);
Expand All @@ -52,7 +52,7 @@ export const countriesTableByContinentResponse = (continent: string) => async ({
bot,
user,
chatId,
}: CallBackQueryParameters) => {
}: TelegramCallBackQueryParameters) => {
const {
confirmed,
recovered,
Expand Down Expand Up @@ -96,13 +96,13 @@ export const countriesTableByContinentResponse = (continent: string) => async ({
);
};

export const worldByContinentOverallResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const worldByContinentOverallResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
user,
chatId,
message,
commandParameter,
}: CallBackQueryParameters) => {
}: TelegramCallBackQueryParameters) => {
if (
!!commandParameter &&
Object.keys(Continents).some((continent) =>
Expand Down
37 changes: 25 additions & 12 deletions server/src/bots/telegram/botResponse/countryResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import {
getFullMenuKeyboard,
} from '../services/keyboard';
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import * as TelegramBot from 'node-telegram-bot-api';
import { catchAsyncError } from '../../../utils/catchError';
Expand All @@ -24,15 +24,18 @@ import {
} from '../../../services/domain/countries';
import { LogCategory } from '../../../models/constants';

export const showCountryByNameStrategyResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const showCountryByNameStrategyResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
message,
chatId,
user,
commandParameter,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
if (!commandParameter) {
return bot.sendMessage(chatId, getUserInputWithoutCountryNameMessage());
return bot.sendMessage(
chatId,
getUserInputWithoutCountryNameMessage(user.settings?.locale)
);
}

return showCountryResponse({
Expand All @@ -44,12 +47,12 @@ export const showCountryByNameStrategyResponse: CallBackQueryHandlerWithCommandA
});
};

export const showCountryByFlag: CallBackQueryHandlerWithCommandArgument = async ({
export const showCountryByFlag: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
message,
chatId,
user,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
const countryFlag = message.text;
if (
!countryFlag ||
Expand All @@ -62,7 +65,10 @@ export const showCountryByFlag: CallBackQueryHandlerWithCommandArgument = async
// Theoretically should be fixed with https://github.com/danbilokha/covid19liveupdates/issues/49
!getCountryNameFormat(name(countryFlag))
) {
return bot.sendMessage(chatId, getUserInputWithoutCountryNameMessage());
return bot.sendMessage(
chatId,
getUserInputWithoutCountryNameMessage(user.settings?.locale)
);
}

return showCountryResponse({
Expand All @@ -74,12 +80,12 @@ export const showCountryByFlag: CallBackQueryHandlerWithCommandArgument = async
});
};

export const showCountryResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const showCountryResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
chatId,
user,
commandParameter: requestedCountry,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
const [err, result]: [
Error,
[Country, Array<CountrySituationInfo>]
Expand All @@ -106,12 +112,19 @@ export const showCountryResponse: CallBackQueryHandlerWithCommandArgument = asyn
// two send messages due to https://stackoverflow.com/a/41841237/6803463
await bot.sendMessage(
chatId,
getCountryMessage(name, confirmed, recovered, deaths, date),
getCountryMessage(
user.settings?.locale,
name,
confirmed,
recovered,
deaths,
date
),
getFullMenuKeyboard(chatId, user.settings?.locale)
);
return bot.sendMessage(
chatId,
getCountryIKActionMessage(name),
getCountryIKActionMessage(user.settings?.locale, name),
getAfterCountryResponseInlineKeyboard(name, user.settings?.locale)
);
};
8 changes: 4 additions & 4 deletions server/src/bots/telegram/botResponse/helpResponse.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { getHelpMessage } from '../../../messages/feature/helpMessages';
import {
CallBackQueryHandlerWithCommandArgument,
CallBackQueryParameters,
TelegramCallBackQueryHandlerWithCommandArgument,
TelegramCallBackQueryParameters,
} from '../models';
import * as TelegramBot from 'node-telegram-bot-api';
import { getFullClickableFeaturesInlineKeyBoard } from '../services/keyboard';

export const helpInfoResponse: CallBackQueryHandlerWithCommandArgument = async ({
export const helpInfoResponse: TelegramCallBackQueryHandlerWithCommandArgument = async ({
bot,
user,
chatId,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
return bot.sendMessage(
chatId,
getHelpMessage(user.settings?.locale),
Expand Down
4 changes: 2 additions & 2 deletions server/src/bots/telegram/botResponse/noResponse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import { logger } from '../../../utils/logger';
import { getHelpProposalInlineKeyboard } from '../services/keyboard';
import { LogCategory } from '../../../models/constants';
import * as TelegramBot from 'node-telegram-bot-api';
import { CallBackQueryParameters } from '../models';
import { TelegramCallBackQueryParameters } from '../models';

export const noResponse = async ({
bot,
message,
user,
chatId,
}: CallBackQueryParameters): Promise<TelegramBot.Message> => {
}: TelegramCallBackQueryParameters): Promise<TelegramBot.Message> => {
// TODO: log with another severity type
logger.error(
'error',
Expand Down

0 comments on commit 9f99fe0

Please sign in to comment.