mirror of
https://github.com/muerwre/vk-tg-bot.git
synced 2025-04-26 07:26:41 +07:00
added vk events handler stub
This commit is contained in:
parent
dfae42c197
commit
3f908da91e
11 changed files with 125 additions and 67 deletions
|
@ -1,9 +1,20 @@
|
|||
import { VkConfig } from './types';
|
||||
import { VkConfig } from "./types";
|
||||
|
||||
export class VkService {
|
||||
public endpoint: string = "/";
|
||||
|
||||
constructor(private config: VkConfig) {
|
||||
if (!config.groups.length) {
|
||||
throw new Error('No vk groups to handle. Specify them in config')
|
||||
throw new Error("No vk groups to handle. Specify them in config");
|
||||
}
|
||||
|
||||
this.endpoint = config.endpoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles incoming VK events
|
||||
*/
|
||||
public handle = async (event: any) => {
|
||||
// TODO: handle events
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,26 +1,27 @@
|
|||
export interface VkConfig extends Record<string, any> {
|
||||
groups: ConfigGroup[]
|
||||
groups: ConfigGroup[];
|
||||
endpoint?: string;
|
||||
}
|
||||
|
||||
interface ConfigGroup {
|
||||
id: number
|
||||
name: string
|
||||
testResponse: string
|
||||
secretKey: string
|
||||
apiKey: string
|
||||
channels: GroupChannel[]
|
||||
id: number;
|
||||
name: string;
|
||||
testResponse: string;
|
||||
secretKey: string;
|
||||
apiKey: string;
|
||||
channels: GroupChannel[];
|
||||
}
|
||||
|
||||
interface GroupChannel {
|
||||
id: string,
|
||||
events: VkEvent[]
|
||||
id: string;
|
||||
events: VkEvent[];
|
||||
}
|
||||
|
||||
export enum VkEvent {
|
||||
Confirmation = 'confirmation',
|
||||
WallPostNew = 'wall_post_new',
|
||||
PostSuggestion = 'post_suggestion',
|
||||
GroupJoin = 'group_join',
|
||||
GroupLeave = 'group_leave',
|
||||
MessageNew = 'message_new',
|
||||
Confirmation = "confirmation",
|
||||
WallPostNew = "wall_post_new",
|
||||
PostSuggestion = "post_suggestion",
|
||||
GroupJoin = "group_join",
|
||||
GroupLeave = "group_leave",
|
||||
MessageNew = "message_new",
|
||||
}
|
||||
|
|
|
@ -1,20 +1,35 @@
|
|||
import * as yup from 'yup'
|
||||
import { VkConfig, VkEvent } from './types';
|
||||
import * as yup from "yup";
|
||||
import { VkConfig, VkEvent } from "./types";
|
||||
|
||||
const vkChannelEventSchema = yup.string().oneOf(Object.values(VkEvent))
|
||||
const vkChannelEventSchema = yup.string().oneOf(Object.values(VkEvent));
|
||||
|
||||
const vkChannelSchema = yup.object().required().shape({
|
||||
id: yup.string().required().matches(/^@/, ({ path }) => `${path} should start with "@"`),
|
||||
events: yup.array().of(vkChannelEventSchema)
|
||||
})
|
||||
const vkChannelSchema = yup
|
||||
.object()
|
||||
.required()
|
||||
.shape({
|
||||
id: yup
|
||||
.string()
|
||||
.required()
|
||||
.matches(/^@/, ({ path }) => `${path} should start with "@"`),
|
||||
events: yup.array().of(vkChannelEventSchema),
|
||||
});
|
||||
|
||||
export const vkConfigSchema = yup.object<VkConfig>().required().shape({
|
||||
groups: yup.array().required().of(yup.object().shape({
|
||||
id: yup.number().positive(),
|
||||
name: yup.string().required(),
|
||||
testResponse: yup.string().required(),
|
||||
secretKey: yup.string().required(),
|
||||
apiKey: yup.string().required(),
|
||||
channels: yup.array().of(vkChannelSchema),
|
||||
}))
|
||||
})
|
||||
export const vkConfigSchema = yup
|
||||
.object<VkConfig>()
|
||||
.required()
|
||||
.shape({
|
||||
endpoint: yup.string().optional(),
|
||||
groups: yup
|
||||
.array()
|
||||
.required()
|
||||
.of(
|
||||
yup.object().shape({
|
||||
id: yup.number().positive(),
|
||||
name: yup.string().required(),
|
||||
testResponse: yup.string().required(),
|
||||
secretKey: yup.string().required(),
|
||||
apiKey: yup.string().required(),
|
||||
channels: yup.array().of(vkChannelSchema),
|
||||
})
|
||||
),
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue