diff --git a/src/service/vk/handlers/JoinLeaveHandler.ts b/src/service/vk/handlers/JoinLeaveHandler.ts index 1bee76c..bb88870 100644 --- a/src/service/vk/handlers/JoinLeaveHandler.ts +++ b/src/service/vk/handlers/JoinLeaveHandler.ts @@ -9,7 +9,7 @@ import { ExtraReplyMessage } from "telegraf/typings/telegram-types"; interface Fields {} interface Values { - user: UsersUserFull; + user?: UsersUserFull; group: ConfigGroup; isJoined: boolean; isLeave: boolean; @@ -24,9 +24,10 @@ export class JoinLeaveHandler extends VkEventHandler { const user = await this.getUserByID(String(context.userId)); const dir = context.isJoin ? "joined" : "left"; const count = await this.getMembersCount(); + const { first_name = "[unknown]", last_name = "[unknown]" } = user || {}; logger.debug( - `vk, group ${this.group.name}: ${user.first_name} ${user.last_name} ${dir} the group` + `vk, group ${this.group.name}: ${first_name} ${last_name} ${dir} the group` ); const parsed = this.template.theme( diff --git a/src/service/vk/handlers/MessageNewHandler.ts b/src/service/vk/handlers/MessageNewHandler.ts index 69eb7bd..38b5d97 100644 --- a/src/service/vk/handlers/MessageNewHandler.ts +++ b/src/service/vk/handlers/MessageNewHandler.ts @@ -13,7 +13,7 @@ interface Fields { } interface Values { - user: UsersUserFull; + user?: UsersUserFull; group: ConfigGroup; text: string; } @@ -29,9 +29,10 @@ export class MessageNewHandler extends VkEventHandler { } const user = await this.getUserByID(String(context.senderId)); + const { first_name = "[unknown]", last_name = "[unknown]" } = user || {}; logger.info( - `vk, group ${this.group.name} received message from ${user.first_name} ${user.last_name}: "${context.text}"` + `vk, group ${this.group.name} received message from ${first_name} ${last_name}: "${context.text}"` ); const parsed = this.template.theme( @@ -47,7 +48,7 @@ export class MessageNewHandler extends VkEventHandler { disable_web_page_preview: true, }; - this.appendButtons(extras, user.id); + this.appendButtons(extras, user?.id); await this.telegram.sendMessageToChan( this.channel.id, @@ -62,8 +63,8 @@ export class MessageNewHandler extends VkEventHandler { /** * Appending buttons (if needed) by mutating original extras */ - private appendButtons = (extras: ExtraReplyMessage, userId: number) => { - if (!this.template?.fields?.buttons?.includes("link")) { + private appendButtons = (extras: ExtraReplyMessage, userId?: number) => { + if (!userId || !this.template?.fields?.buttons?.includes("link")) { return; } diff --git a/src/service/vk/handlers/VkEventHandler.ts b/src/service/vk/handlers/VkEventHandler.ts index 39d814b..ad9fffb 100644 --- a/src/service/vk/handlers/VkEventHandler.ts +++ b/src/service/vk/handlers/VkEventHandler.ts @@ -36,12 +36,16 @@ export class VkEventHandler< * @param id */ protected getUserByID = async (id: string) => { - const users = await this.instance.api.users.get({ - user_ids: [id], - fields: ["sex"], - }); + try { + const users = await this.instance.api.users.get({ + user_ids: [id], + fields: ["sex"], + }); - return users[0]; + return users[0]; + } catch (e) { + return undefined; + } }; /**