mirror of
https://github.com/cwinfo/matterbridge.git
synced 2024-12-27 11:15:39 +00:00
8764be7461
* Add vk bridge * Vk bridge attachments * Vk bridge forwarded messages * Vk bridge sample config and code cleanup * Vk bridge add vendor * Vk bridge message edit * Vk bridge: fix fetching names of other bots * Vk bridge: code cleanup * Vk bridge: fix shadows declaration * Vk bridge: remove UseFileURL
1242 lines
36 KiB
Go
1242 lines
36 KiB
Go
/*
|
||
Package events for community events handling.
|
||
|
||
See more https://vk.com/dev/groups_events
|
||
*/
|
||
package events // import "github.com/SevereCloud/vksdk/v2/events"
|
||
|
||
import (
|
||
"context"
|
||
"encoding/json"
|
||
|
||
"github.com/SevereCloud/vksdk/v2/internal"
|
||
)
|
||
|
||
// EventType type.
|
||
type EventType string
|
||
|
||
// EventType list.
|
||
const (
|
||
EventConfirmation = "confirmation"
|
||
EventMessageNew = "message_new"
|
||
EventMessageReply = "message_reply"
|
||
EventMessageEdit = "message_edit"
|
||
EventMessageAllow = "message_allow"
|
||
EventMessageDeny = "message_deny"
|
||
EventMessageTypingState = "message_typing_state"
|
||
EventMessageEvent = "message_event"
|
||
EventPhotoNew = "photo_new"
|
||
EventPhotoCommentNew = "photo_comment_new"
|
||
EventPhotoCommentEdit = "photo_comment_edit"
|
||
EventPhotoCommentRestore = "photo_comment_restore"
|
||
EventPhotoCommentDelete = "photo_comment_delete"
|
||
EventAudioNew = "audio_new"
|
||
EventVideoNew = "video_new"
|
||
EventVideoCommentNew = "video_comment_new"
|
||
EventVideoCommentEdit = "video_comment_edit"
|
||
EventVideoCommentRestore = "video_comment_restore"
|
||
EventVideoCommentDelete = "video_comment_delete"
|
||
EventWallPostNew = "wall_post_new"
|
||
EventWallRepost = "wall_repost"
|
||
EventWallReplyNew = "wall_reply_new"
|
||
EventWallReplyEdit = "wall_reply_edit"
|
||
EventWallReplyRestore = "wall_reply_restore"
|
||
EventWallReplyDelete = "wall_reply_delete"
|
||
EventBoardPostNew = "board_post_new"
|
||
EventBoardPostEdit = "board_post_edit"
|
||
EventBoardPostRestore = "board_post_restore"
|
||
EventBoardPostDelete = "board_post_delete"
|
||
EventMarketCommentNew = "market_comment_new"
|
||
EventMarketCommentEdit = "market_comment_edit"
|
||
EventMarketCommentRestore = "market_comment_restore"
|
||
EventMarketCommentDelete = "market_comment_delete"
|
||
EventMarketOrderNew = "market_order_new"
|
||
EventMarketOrderEdit = "market_order_edit"
|
||
EventGroupLeave = "group_leave"
|
||
EventGroupJoin = "group_join"
|
||
EventUserBlock = "user_block"
|
||
EventUserUnblock = "user_unblock"
|
||
EventPollVoteNew = "poll_vote_new"
|
||
EventGroupOfficersEdit = "group_officers_edit"
|
||
EventGroupChangeSettings = "group_change_settings"
|
||
EventGroupChangePhoto = "group_change_photo"
|
||
EventVkpayTransaction = "vkpay_transaction"
|
||
EventLeadFormsNew = "lead_forms_new"
|
||
EventAppPayload = "app_payload"
|
||
EventMessageRead = "message_read"
|
||
EventLikeAdd = "like_add"
|
||
EventLikeRemove = "like_remove"
|
||
EventDonutSubscriptionCreate = "donut_subscription_create"
|
||
EventDonutSubscriptionProlonged = "donut_subscription_prolonged"
|
||
EventDonutSubscriptionExpired = "donut_subscription_expired"
|
||
EventDonutSubscriptionCancelled = "donut_subscription_cancelled"
|
||
EventDonutSubscriptionPriceChanged = "donut_subscription_price_changed"
|
||
EventDonutMoneyWithdraw = "donut_money_withdraw"
|
||
EventDonutMoneyWithdrawError = "donut_money_withdraw_error"
|
||
)
|
||
|
||
// GroupEvent struct.
|
||
type GroupEvent struct {
|
||
Type EventType `json:"type"`
|
||
Object json.RawMessage `json:"object"`
|
||
GroupID int `json:"group_id"`
|
||
EventID string `json:"event_id"`
|
||
Secret string `json:"secret"`
|
||
}
|
||
|
||
// FuncList struct.
|
||
type FuncList struct {
|
||
messageNew []func(context.Context, MessageNewObject)
|
||
messageReply []func(context.Context, MessageReplyObject)
|
||
messageEdit []func(context.Context, MessageEditObject)
|
||
messageAllow []func(context.Context, MessageAllowObject)
|
||
messageDeny []func(context.Context, MessageDenyObject)
|
||
messageTypingState []func(context.Context, MessageTypingStateObject)
|
||
messageEvent []func(context.Context, MessageEventObject)
|
||
photoNew []func(context.Context, PhotoNewObject)
|
||
photoCommentNew []func(context.Context, PhotoCommentNewObject)
|
||
photoCommentEdit []func(context.Context, PhotoCommentEditObject)
|
||
photoCommentRestore []func(context.Context, PhotoCommentRestoreObject)
|
||
photoCommentDelete []func(context.Context, PhotoCommentDeleteObject)
|
||
audioNew []func(context.Context, AudioNewObject)
|
||
videoNew []func(context.Context, VideoNewObject)
|
||
videoCommentNew []func(context.Context, VideoCommentNewObject)
|
||
videoCommentEdit []func(context.Context, VideoCommentEditObject)
|
||
videoCommentRestore []func(context.Context, VideoCommentRestoreObject)
|
||
videoCommentDelete []func(context.Context, VideoCommentDeleteObject)
|
||
wallPostNew []func(context.Context, WallPostNewObject)
|
||
wallRepost []func(context.Context, WallRepostObject)
|
||
wallReplyNew []func(context.Context, WallReplyNewObject)
|
||
wallReplyEdit []func(context.Context, WallReplyEditObject)
|
||
wallReplyRestore []func(context.Context, WallReplyRestoreObject)
|
||
wallReplyDelete []func(context.Context, WallReplyDeleteObject)
|
||
boardPostNew []func(context.Context, BoardPostNewObject)
|
||
boardPostEdit []func(context.Context, BoardPostEditObject)
|
||
boardPostRestore []func(context.Context, BoardPostRestoreObject)
|
||
boardPostDelete []func(context.Context, BoardPostDeleteObject)
|
||
marketCommentNew []func(context.Context, MarketCommentNewObject)
|
||
marketCommentEdit []func(context.Context, MarketCommentEditObject)
|
||
marketCommentRestore []func(context.Context, MarketCommentRestoreObject)
|
||
marketCommentDelete []func(context.Context, MarketCommentDeleteObject)
|
||
marketOrderNew []func(context.Context, MarketOrderNewObject)
|
||
marketOrderEdit []func(context.Context, MarketOrderEditObject)
|
||
groupLeave []func(context.Context, GroupLeaveObject)
|
||
groupJoin []func(context.Context, GroupJoinObject)
|
||
userBlock []func(context.Context, UserBlockObject)
|
||
userUnblock []func(context.Context, UserUnblockObject)
|
||
pollVoteNew []func(context.Context, PollVoteNewObject)
|
||
groupOfficersEdit []func(context.Context, GroupOfficersEditObject)
|
||
groupChangeSettings []func(context.Context, GroupChangeSettingsObject)
|
||
groupChangePhoto []func(context.Context, GroupChangePhotoObject)
|
||
vkpayTransaction []func(context.Context, VkpayTransactionObject)
|
||
leadFormsNew []func(context.Context, LeadFormsNewObject)
|
||
appPayload []func(context.Context, AppPayloadObject)
|
||
messageRead []func(context.Context, MessageReadObject)
|
||
likeAdd []func(context.Context, LikeAddObject)
|
||
likeRemove []func(context.Context, LikeRemoveObject)
|
||
donutSubscriptionCreate []func(context.Context, DonutSubscriptionCreateObject)
|
||
donutSubscriptionProlonged []func(context.Context, DonutSubscriptionProlongedObject)
|
||
donutSubscriptionExpired []func(context.Context, DonutSubscriptionExpiredObject)
|
||
donutSubscriptionCancelled []func(context.Context, DonutSubscriptionCancelledObject)
|
||
donutSubscriptionPriceChanged []func(context.Context, DonutSubscriptionPriceChangedObject)
|
||
donutMoneyWithdraw []func(context.Context, DonutMoneyWithdrawObject)
|
||
donutMoneyWithdrawError []func(context.Context, DonutMoneyWithdrawErrorObject)
|
||
special map[EventType][]func(context.Context, GroupEvent)
|
||
eventsList []EventType
|
||
|
||
goroutine bool
|
||
}
|
||
|
||
// NewFuncList returns a new FuncList.
|
||
func NewFuncList() *FuncList {
|
||
return &FuncList{
|
||
special: make(map[EventType][]func(context.Context, GroupEvent)),
|
||
}
|
||
}
|
||
|
||
// Handler group event handler.
|
||
func (fl FuncList) Handler(ctx context.Context, e GroupEvent) error { // nolint:gocyclo
|
||
ctx = context.WithValue(ctx, internal.GroupIDKey, e.GroupID)
|
||
ctx = context.WithValue(ctx, internal.EventIDKey, e.EventID)
|
||
|
||
if sliceFunc, ok := fl.special[e.Type]; ok {
|
||
for _, f := range sliceFunc {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, e) }()
|
||
} else {
|
||
f(ctx, e)
|
||
}
|
||
}
|
||
}
|
||
|
||
switch e.Type {
|
||
case EventMessageNew:
|
||
var obj MessageNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageReply:
|
||
var obj MessageReplyObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageReply {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageEdit:
|
||
var obj MessageEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageAllow:
|
||
var obj MessageAllowObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageAllow {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageDeny:
|
||
var obj MessageDenyObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageDeny {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageTypingState: // На основе ответа
|
||
var obj MessageTypingStateObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageTypingState {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageEvent:
|
||
var obj MessageEventObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageEvent {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPhotoNew:
|
||
var obj PhotoNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.photoNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPhotoCommentNew:
|
||
var obj PhotoCommentNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.photoCommentNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPhotoCommentEdit:
|
||
var obj PhotoCommentEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.photoCommentEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPhotoCommentRestore:
|
||
var obj PhotoCommentRestoreObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.photoCommentRestore {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPhotoCommentDelete:
|
||
var obj PhotoCommentDeleteObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.photoCommentDelete {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventAudioNew:
|
||
var obj AudioNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.audioNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVideoNew:
|
||
var obj VideoNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.videoNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVideoCommentNew:
|
||
var obj VideoCommentNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.videoCommentNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVideoCommentEdit:
|
||
var obj VideoCommentEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.videoCommentEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVideoCommentRestore:
|
||
var obj VideoCommentRestoreObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.videoCommentRestore {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVideoCommentDelete:
|
||
var obj VideoCommentDeleteObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.videoCommentDelete {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallPostNew:
|
||
var obj WallPostNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallPostNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallRepost:
|
||
var obj WallRepostObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallRepost {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallReplyNew:
|
||
var obj WallReplyNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallReplyNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallReplyEdit:
|
||
var obj WallReplyEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallReplyEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallReplyRestore:
|
||
var obj WallReplyRestoreObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallReplyRestore {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventWallReplyDelete:
|
||
var obj WallReplyDeleteObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.wallReplyDelete {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventBoardPostNew:
|
||
var obj BoardPostNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.boardPostNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventBoardPostEdit:
|
||
var obj BoardPostEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.boardPostEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventBoardPostRestore:
|
||
var obj BoardPostRestoreObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.boardPostRestore {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventBoardPostDelete:
|
||
var obj BoardPostDeleteObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.boardPostDelete {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketCommentNew:
|
||
var obj MarketCommentNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketCommentNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketCommentEdit:
|
||
var obj MarketCommentEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketCommentEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketCommentRestore:
|
||
var obj MarketCommentRestoreObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketCommentRestore {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketCommentDelete:
|
||
var obj MarketCommentDeleteObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketCommentDelete {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketOrderNew:
|
||
var obj MarketOrderNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketOrderNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMarketOrderEdit:
|
||
var obj MarketOrderEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.marketOrderEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventGroupLeave:
|
||
var obj GroupLeaveObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.groupLeave {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventGroupJoin:
|
||
var obj GroupJoinObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.groupJoin {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventUserBlock:
|
||
var obj UserBlockObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.userBlock {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventUserUnblock:
|
||
var obj UserUnblockObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.userUnblock {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventPollVoteNew:
|
||
var obj PollVoteNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.pollVoteNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventGroupOfficersEdit:
|
||
var obj GroupOfficersEditObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.groupOfficersEdit {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventGroupChangeSettings:
|
||
var obj GroupChangeSettingsObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.groupChangeSettings {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventGroupChangePhoto:
|
||
var obj GroupChangePhotoObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.groupChangePhoto {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventVkpayTransaction:
|
||
var obj VkpayTransactionObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.vkpayTransaction {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventLeadFormsNew:
|
||
var obj LeadFormsNewObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.leadFormsNew {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventAppPayload:
|
||
var obj AppPayloadObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.appPayload {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventMessageRead:
|
||
var obj MessageReadObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.messageRead {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventLikeAdd:
|
||
var obj LikeAddObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.likeAdd {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventLikeRemove:
|
||
var obj LikeRemoveObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.likeRemove {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutSubscriptionCreate:
|
||
var obj DonutSubscriptionCreateObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutSubscriptionCreate {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutSubscriptionProlonged:
|
||
var obj DonutSubscriptionProlongedObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutSubscriptionProlonged {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutSubscriptionExpired:
|
||
var obj DonutSubscriptionExpiredObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutSubscriptionExpired {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutSubscriptionCancelled:
|
||
var obj DonutSubscriptionCancelledObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutSubscriptionCancelled {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutSubscriptionPriceChanged:
|
||
var obj DonutSubscriptionPriceChangedObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutSubscriptionPriceChanged {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutMoneyWithdraw:
|
||
var obj DonutMoneyWithdrawObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutMoneyWithdraw {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
case EventDonutMoneyWithdrawError:
|
||
var obj DonutMoneyWithdrawErrorObject
|
||
if err := json.Unmarshal(e.Object, &obj); err != nil {
|
||
return err
|
||
}
|
||
|
||
for _, f := range fl.donutMoneyWithdrawError {
|
||
if fl.goroutine {
|
||
go func() { f(ctx, obj) }()
|
||
} else {
|
||
f(ctx, obj)
|
||
}
|
||
}
|
||
}
|
||
|
||
return nil
|
||
}
|
||
|
||
// ListEvents return list of events.
|
||
func (fl FuncList) ListEvents() []EventType {
|
||
return fl.eventsList
|
||
}
|
||
|
||
// Goroutine invoke functions in a goroutine.
|
||
func (fl *FuncList) Goroutine(v bool) {
|
||
fl.goroutine = v
|
||
}
|
||
|
||
// OnEvent handler.
|
||
func (fl *FuncList) OnEvent(eventType EventType, f func(context.Context, GroupEvent)) {
|
||
if fl.special == nil {
|
||
fl.special = make(map[EventType][]func(context.Context, GroupEvent))
|
||
}
|
||
|
||
fl.special[eventType] = append(fl.special[eventType], f)
|
||
fl.eventsList = append(fl.eventsList, eventType)
|
||
}
|
||
|
||
// MessageNew handler.
|
||
func (fl *FuncList) MessageNew(f func(context.Context, MessageNewObject)) {
|
||
fl.messageNew = append(fl.messageNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageNew)
|
||
}
|
||
|
||
// MessageReply handler.
|
||
func (fl *FuncList) MessageReply(f func(context.Context, MessageReplyObject)) {
|
||
fl.messageReply = append(fl.messageReply, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageReply)
|
||
}
|
||
|
||
// MessageEdit handler.
|
||
func (fl *FuncList) MessageEdit(f func(context.Context, MessageEditObject)) {
|
||
fl.messageEdit = append(fl.messageEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageEdit)
|
||
}
|
||
|
||
// MessageAllow handler.
|
||
func (fl *FuncList) MessageAllow(f func(context.Context, MessageAllowObject)) {
|
||
fl.messageAllow = append(fl.messageAllow, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageAllow)
|
||
}
|
||
|
||
// MessageDeny handler.
|
||
func (fl *FuncList) MessageDeny(f func(context.Context, MessageDenyObject)) {
|
||
fl.messageDeny = append(fl.messageDeny, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageDeny)
|
||
}
|
||
|
||
// MessageTypingState handler.
|
||
func (fl *FuncList) MessageTypingState(f func(context.Context, MessageTypingStateObject)) {
|
||
fl.messageTypingState = append(fl.messageTypingState, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageTypingState)
|
||
}
|
||
|
||
// MessageEvent handler.
|
||
func (fl *FuncList) MessageEvent(f func(context.Context, MessageEventObject)) {
|
||
fl.messageEvent = append(fl.messageEvent, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageEvent)
|
||
}
|
||
|
||
// PhotoNew handler.
|
||
func (fl *FuncList) PhotoNew(f func(context.Context, PhotoNewObject)) {
|
||
fl.photoNew = append(fl.photoNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventPhotoNew)
|
||
}
|
||
|
||
// PhotoCommentNew handler.
|
||
func (fl *FuncList) PhotoCommentNew(f func(context.Context, PhotoCommentNewObject)) {
|
||
fl.photoCommentNew = append(fl.photoCommentNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventPhotoCommentNew)
|
||
}
|
||
|
||
// PhotoCommentEdit handler.
|
||
func (fl *FuncList) PhotoCommentEdit(f func(context.Context, PhotoCommentEditObject)) {
|
||
fl.photoCommentEdit = append(fl.photoCommentEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventPhotoCommentEdit)
|
||
}
|
||
|
||
// PhotoCommentRestore handler.
|
||
func (fl *FuncList) PhotoCommentRestore(f func(context.Context, PhotoCommentRestoreObject)) {
|
||
fl.photoCommentRestore = append(fl.photoCommentRestore, f)
|
||
fl.eventsList = append(fl.eventsList, EventPhotoCommentRestore)
|
||
}
|
||
|
||
// PhotoCommentDelete handler.
|
||
func (fl *FuncList) PhotoCommentDelete(f func(context.Context, PhotoCommentDeleteObject)) {
|
||
fl.photoCommentDelete = append(fl.photoCommentDelete, f)
|
||
fl.eventsList = append(fl.eventsList, EventPhotoCommentDelete)
|
||
}
|
||
|
||
// AudioNew handler.
|
||
func (fl *FuncList) AudioNew(f func(context.Context, AudioNewObject)) {
|
||
fl.audioNew = append(fl.audioNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventAudioNew)
|
||
}
|
||
|
||
// VideoNew handler.
|
||
func (fl *FuncList) VideoNew(f func(context.Context, VideoNewObject)) {
|
||
fl.videoNew = append(fl.videoNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventVideoNew)
|
||
}
|
||
|
||
// VideoCommentNew handler.
|
||
func (fl *FuncList) VideoCommentNew(f func(context.Context, VideoCommentNewObject)) {
|
||
fl.videoCommentNew = append(fl.videoCommentNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventVideoCommentNew)
|
||
}
|
||
|
||
// VideoCommentEdit handler.
|
||
func (fl *FuncList) VideoCommentEdit(f func(context.Context, VideoCommentEditObject)) {
|
||
fl.videoCommentEdit = append(fl.videoCommentEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventVideoCommentEdit)
|
||
}
|
||
|
||
// VideoCommentRestore handler.
|
||
func (fl *FuncList) VideoCommentRestore(f func(context.Context, VideoCommentRestoreObject)) {
|
||
fl.videoCommentRestore = append(fl.videoCommentRestore, f)
|
||
fl.eventsList = append(fl.eventsList, EventVideoCommentRestore)
|
||
}
|
||
|
||
// VideoCommentDelete handler.
|
||
func (fl *FuncList) VideoCommentDelete(f func(context.Context, VideoCommentDeleteObject)) {
|
||
fl.videoCommentDelete = append(fl.videoCommentDelete, f)
|
||
fl.eventsList = append(fl.eventsList, EventVideoCommentDelete)
|
||
}
|
||
|
||
// WallPostNew handler.
|
||
func (fl *FuncList) WallPostNew(f func(context.Context, WallPostNewObject)) {
|
||
fl.wallPostNew = append(fl.wallPostNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallPostNew)
|
||
}
|
||
|
||
// WallRepost handler.
|
||
func (fl *FuncList) WallRepost(f func(context.Context, WallRepostObject)) {
|
||
fl.wallRepost = append(fl.wallRepost, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallRepost)
|
||
}
|
||
|
||
// WallReplyNew handler.
|
||
func (fl *FuncList) WallReplyNew(f func(context.Context, WallReplyNewObject)) {
|
||
fl.wallReplyNew = append(fl.wallReplyNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallReplyNew)
|
||
}
|
||
|
||
// WallReplyEdit handler.
|
||
func (fl *FuncList) WallReplyEdit(f func(context.Context, WallReplyEditObject)) {
|
||
fl.wallReplyEdit = append(fl.wallReplyEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallReplyEdit)
|
||
}
|
||
|
||
// WallReplyRestore handler.
|
||
func (fl *FuncList) WallReplyRestore(f func(context.Context, WallReplyRestoreObject)) {
|
||
fl.wallReplyRestore = append(fl.wallReplyRestore, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallReplyRestore)
|
||
}
|
||
|
||
// WallReplyDelete handler.
|
||
func (fl *FuncList) WallReplyDelete(f func(context.Context, WallReplyDeleteObject)) {
|
||
fl.wallReplyDelete = append(fl.wallReplyDelete, f)
|
||
fl.eventsList = append(fl.eventsList, EventWallReplyDelete)
|
||
}
|
||
|
||
// BoardPostNew handler.
|
||
func (fl *FuncList) BoardPostNew(f func(context.Context, BoardPostNewObject)) {
|
||
fl.boardPostNew = append(fl.boardPostNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventBoardPostNew)
|
||
}
|
||
|
||
// BoardPostEdit handler.
|
||
func (fl *FuncList) BoardPostEdit(f func(context.Context, BoardPostEditObject)) {
|
||
fl.boardPostEdit = append(fl.boardPostEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventBoardPostEdit)
|
||
}
|
||
|
||
// BoardPostRestore handler.
|
||
func (fl *FuncList) BoardPostRestore(f func(context.Context, BoardPostRestoreObject)) {
|
||
fl.boardPostRestore = append(fl.boardPostRestore, f)
|
||
fl.eventsList = append(fl.eventsList, EventBoardPostRestore)
|
||
}
|
||
|
||
// BoardPostDelete handler.
|
||
func (fl *FuncList) BoardPostDelete(f func(context.Context, BoardPostDeleteObject)) {
|
||
fl.boardPostDelete = append(fl.boardPostDelete, f)
|
||
fl.eventsList = append(fl.eventsList, EventBoardPostDelete)
|
||
}
|
||
|
||
// MarketCommentNew handler.
|
||
func (fl *FuncList) MarketCommentNew(f func(context.Context, MarketCommentNewObject)) {
|
||
fl.marketCommentNew = append(fl.marketCommentNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketCommentNew)
|
||
}
|
||
|
||
// MarketCommentEdit handler.
|
||
func (fl *FuncList) MarketCommentEdit(f func(context.Context, MarketCommentEditObject)) {
|
||
fl.marketCommentEdit = append(fl.marketCommentEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketCommentEdit)
|
||
}
|
||
|
||
// MarketCommentRestore handler.
|
||
func (fl *FuncList) MarketCommentRestore(f func(context.Context, MarketCommentRestoreObject)) {
|
||
fl.marketCommentRestore = append(fl.marketCommentRestore, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketCommentRestore)
|
||
}
|
||
|
||
// MarketCommentDelete handler.
|
||
func (fl *FuncList) MarketCommentDelete(f func(context.Context, MarketCommentDeleteObject)) {
|
||
fl.marketCommentDelete = append(fl.marketCommentDelete, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketCommentDelete)
|
||
}
|
||
|
||
// MarketOrderNew handler.
|
||
func (fl *FuncList) MarketOrderNew(f func(context.Context, MarketOrderNewObject)) {
|
||
fl.marketOrderNew = append(fl.marketOrderNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketOrderNew)
|
||
}
|
||
|
||
// MarketOrderEdit handler.
|
||
func (fl *FuncList) MarketOrderEdit(f func(context.Context, MarketOrderEditObject)) {
|
||
fl.marketOrderEdit = append(fl.marketOrderEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventMarketOrderEdit)
|
||
}
|
||
|
||
// GroupLeave handler.
|
||
func (fl *FuncList) GroupLeave(f func(context.Context, GroupLeaveObject)) {
|
||
fl.groupLeave = append(fl.groupLeave, f)
|
||
fl.eventsList = append(fl.eventsList, EventGroupLeave)
|
||
}
|
||
|
||
// GroupJoin handler.
|
||
func (fl *FuncList) GroupJoin(f func(context.Context, GroupJoinObject)) {
|
||
fl.groupJoin = append(fl.groupJoin, f)
|
||
fl.eventsList = append(fl.eventsList, EventGroupJoin)
|
||
}
|
||
|
||
// UserBlock handler.
|
||
func (fl *FuncList) UserBlock(f func(context.Context, UserBlockObject)) {
|
||
fl.userBlock = append(fl.userBlock, f)
|
||
fl.eventsList = append(fl.eventsList, EventUserBlock)
|
||
}
|
||
|
||
// UserUnblock handler.
|
||
func (fl *FuncList) UserUnblock(f func(context.Context, UserUnblockObject)) {
|
||
fl.userUnblock = append(fl.userUnblock, f)
|
||
fl.eventsList = append(fl.eventsList, EventUserUnblock)
|
||
}
|
||
|
||
// PollVoteNew handler.
|
||
func (fl *FuncList) PollVoteNew(f func(context.Context, PollVoteNewObject)) {
|
||
fl.pollVoteNew = append(fl.pollVoteNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventPollVoteNew)
|
||
}
|
||
|
||
// GroupOfficersEdit handler.
|
||
func (fl *FuncList) GroupOfficersEdit(f func(context.Context, GroupOfficersEditObject)) {
|
||
fl.groupOfficersEdit = append(fl.groupOfficersEdit, f)
|
||
fl.eventsList = append(fl.eventsList, EventGroupOfficersEdit)
|
||
}
|
||
|
||
// GroupChangeSettings handler.
|
||
func (fl *FuncList) GroupChangeSettings(f func(context.Context, GroupChangeSettingsObject)) {
|
||
fl.groupChangeSettings = append(fl.groupChangeSettings, f)
|
||
fl.eventsList = append(fl.eventsList, EventGroupChangeSettings)
|
||
}
|
||
|
||
// GroupChangePhoto handler.
|
||
func (fl *FuncList) GroupChangePhoto(f func(context.Context, GroupChangePhotoObject)) {
|
||
fl.groupChangePhoto = append(fl.groupChangePhoto, f)
|
||
fl.eventsList = append(fl.eventsList, EventGroupChangePhoto)
|
||
}
|
||
|
||
// VkpayTransaction handler.
|
||
func (fl *FuncList) VkpayTransaction(f func(context.Context, VkpayTransactionObject)) {
|
||
fl.vkpayTransaction = append(fl.vkpayTransaction, f)
|
||
fl.eventsList = append(fl.eventsList, EventVkpayTransaction)
|
||
}
|
||
|
||
// LeadFormsNew handler.
|
||
func (fl *FuncList) LeadFormsNew(f func(context.Context, LeadFormsNewObject)) {
|
||
fl.leadFormsNew = append(fl.leadFormsNew, f)
|
||
fl.eventsList = append(fl.eventsList, EventLeadFormsNew)
|
||
}
|
||
|
||
// AppPayload handler.
|
||
func (fl *FuncList) AppPayload(f func(context.Context, AppPayloadObject)) {
|
||
fl.appPayload = append(fl.appPayload, f)
|
||
fl.eventsList = append(fl.eventsList, EventAppPayload)
|
||
}
|
||
|
||
// MessageRead handler.
|
||
func (fl *FuncList) MessageRead(f func(context.Context, MessageReadObject)) {
|
||
fl.messageRead = append(fl.messageRead, f)
|
||
fl.eventsList = append(fl.eventsList, EventMessageRead)
|
||
}
|
||
|
||
// LikeAdd handler.
|
||
func (fl *FuncList) LikeAdd(f func(context.Context, LikeAddObject)) {
|
||
fl.likeAdd = append(fl.likeAdd, f)
|
||
fl.eventsList = append(fl.eventsList, EventLikeAdd)
|
||
}
|
||
|
||
// LikeRemove handler.
|
||
func (fl *FuncList) LikeRemove(f func(context.Context, LikeRemoveObject)) {
|
||
fl.likeRemove = append(fl.likeRemove, f)
|
||
fl.eventsList = append(fl.eventsList, EventLikeRemove)
|
||
}
|
||
|
||
// DonutSubscriptionCreate handler.
|
||
func (fl *FuncList) DonutSubscriptionCreate(f func(context.Context, DonutSubscriptionCreateObject)) {
|
||
fl.donutSubscriptionCreate = append(fl.donutSubscriptionCreate, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutSubscriptionCreate)
|
||
}
|
||
|
||
// DonutSubscriptionProlonged handler.
|
||
func (fl *FuncList) DonutSubscriptionProlonged(f func(context.Context, DonutSubscriptionProlongedObject)) {
|
||
fl.donutSubscriptionProlonged = append(fl.donutSubscriptionProlonged, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutSubscriptionProlonged)
|
||
}
|
||
|
||
// DonutSubscriptionExpired handler.
|
||
func (fl *FuncList) DonutSubscriptionExpired(f func(context.Context, DonutSubscriptionExpiredObject)) {
|
||
fl.donutSubscriptionExpired = append(fl.donutSubscriptionExpired, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutSubscriptionExpired)
|
||
}
|
||
|
||
// DonutSubscriptionCancelled handler.
|
||
func (fl *FuncList) DonutSubscriptionCancelled(f func(context.Context, DonutSubscriptionCancelledObject)) {
|
||
fl.donutSubscriptionCancelled = append(fl.donutSubscriptionCancelled, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutSubscriptionCancelled)
|
||
}
|
||
|
||
// DonutSubscriptionPriceChanged handler.
|
||
func (fl *FuncList) DonutSubscriptionPriceChanged(f func(context.Context, DonutSubscriptionPriceChangedObject)) {
|
||
fl.donutSubscriptionPriceChanged = append(fl.donutSubscriptionPriceChanged, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutSubscriptionPriceChanged)
|
||
}
|
||
|
||
// DonutMoneyWithdraw handler.
|
||
func (fl *FuncList) DonutMoneyWithdraw(f func(context.Context, DonutMoneyWithdrawObject)) {
|
||
fl.donutMoneyWithdraw = append(fl.donutMoneyWithdraw, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutMoneyWithdraw)
|
||
}
|
||
|
||
// DonutMoneyWithdrawError handler.
|
||
func (fl *FuncList) DonutMoneyWithdrawError(f func(context.Context, DonutMoneyWithdrawErrorObject)) {
|
||
fl.donutMoneyWithdrawError = append(fl.donutMoneyWithdrawError, f)
|
||
fl.eventsList = append(fl.eventsList, EventDonutMoneyWithdrawError)
|
||
}
|