1
0
Fork 0
mirror of https://github.com/muerwre/vk-tg-bot.git synced 2025-04-25 06:56:40 +07:00

#6 added joiin-leave handler

This commit is contained in:
Fedor Katurov 2021-05-13 10:26:37 +07:00
parent 4f321373f9
commit 37b0bf13be
7 changed files with 86 additions and 3 deletions

View file

@ -0,0 +1,61 @@
import { VkEventHandler } from "./VkEventHandler";
import { GroupMemberContext } from "vk-io";
import { NextMiddleware } from "middleware-io";
import logger from "../../logger";
import { UsersUserFull } from "vk-io/lib/api/schemas/objects";
import { ConfigGroup } from "../types";
import { ExtraReplyMessage } from "telegraf/typings/telegram-types";
interface Fields {}
interface Values {
user: UsersUserFull;
group: ConfigGroup;
isJoined: boolean;
isLeave: boolean;
count: number;
}
export class JoinLeaveHandler extends VkEventHandler<Fields, Values> {
public execute = async (
context: GroupMemberContext,
next: NextMiddleware
) => {
const user = await this.getUserByID(String(context.userId));
const dir = context.isJoin ? "joined" : "left";
const count = await this.getMembersCount();
logger.debug(
`vk, group ${this.group.name}: ${user.first_name} ${user.last_name} ${dir} the group`
);
const parsed = this.template.theme({
user,
group: this.group,
isJoined: context.isJoin,
isLeave: context.isLeave,
count,
});
const extras: ExtraReplyMessage = {
parse_mode: "Markdown",
disable_web_page_preview: true,
};
await this.telegram.sendMessageToChan(this.channel.id, parsed, extras);
await next();
};
/**
* Returns current members count
* @private
*/
private getMembersCount = async () => {
const resp = await this.instance.api.groups.getMembers({
group_id: this.group.id.toString(),
});
return resp.count;
};
}