1
0
Fork 0
mirror of https://github.com/muerwre/vk-tg-bot.git synced 2025-04-26 15:36:41 +07:00

added working message handler

This commit is contained in:
Fedor Katurov 2021-04-28 13:03:10 +07:00
parent 12c8e30a1e
commit 1754092f7c
6 changed files with 77 additions and 39 deletions

View file

@ -1,12 +1,28 @@
import { VkEventHandler } from "./types";
import { ContextDefaultState, MessageContext } from "vk-io";
import { VkEventHandler } from "./VkEventHandler";
import { MessageContext } from "vk-io";
import { NextMiddleware } from "middleware-io";
import logger from "../../logger";
import { ContextDefaultState } from "vk-io/lib/structures/contexts/context";
export class MessageNewHandler extends VkEventHandler {
public execute = async (
context: MessageContext<ContextDefaultState>,
next: NextMiddleware
) => {
if (context.isOutbox) {
await next();
return;
}
const users = await this.instance.api.users.get({
user_ids: [String(context.senderId)],
});
const from = users[0];
logger.debug(
`received message from ${from.first_name} ${from.last_name}: ${context.text}`
);
export class MessageNewHandler extends VkEventHandler<
MessageContext<ContextDefaultState>
> {
public execute = async (context, next: NextMiddleware) => {
console.log("received message!");
await next();
};
}

View file

@ -0,0 +1,21 @@
import { NextMiddleware } from "middleware-io";
import { ConfigGroup, GroupInstance } from "../types";
import { VkService } from "../index";
import { TelegramService } from "../../telegram";
export abstract class VkEventHandler {
public constructor(
protected group: ConfigGroup,
protected instance: GroupInstance,
protected vk: VkService,
protected telegram: TelegramService
) {}
public execute: (
context: any,
next: NextMiddleware
) => Promise<void> = async (ctx, next) => {
console.log(`vk received unknown event`, ctx);
await next();
};
}

View file

@ -1,11 +1,14 @@
import { VkEvent } from "../types";
import { VkEventHandler } from "./types";
import { VkEventHandler } from "./VkEventHandler";
import { MessageNewHandler } from "./MessageNewHandler";
export const vkEventToHandler: Record<VkEvent, typeof VkEventHandler> = {
[VkEvent.GroupJoin]: VkEventHandler,
[VkEvent.GroupLeave]: VkEventHandler,
type DerivedHandler = typeof VkEventHandler;
interface Handler extends DerivedHandler {}
export const vkEventToHandler: Record<VkEvent, Handler> = {
[VkEvent.GroupJoin]: MessageNewHandler,
[VkEvent.GroupLeave]: MessageNewHandler,
[VkEvent.MessageNew]: MessageNewHandler,
[VkEvent.PostSuggestion]: VkEventHandler,
[VkEvent.WallPostNew]: VkEventHandler,
[VkEvent.PostSuggestion]: MessageNewHandler,
[VkEvent.WallPostNew]: MessageNewHandler,
};

View file

@ -1,13 +0,0 @@
import { NextMiddleware } from "middleware-io";
import { ConfigGroup } from "../types";
export class VkEventHandler<T = any> {
public constructor(protected config: ConfigGroup) {}
public execute: (context: T, next: NextMiddleware) => Promise<void> = async (
ctx,
next
) => {
console.log(`vk received unknown event`, ctx);
await next();
};
}