diff --git a/event.go b/event.go index fec0920..38ff064 100644 --- a/event.go +++ b/event.go @@ -18,6 +18,8 @@ type Event struct { UpdateID int // Value is the non-null field value in Update Value any + // value is the reflect value of Value + value reflect.Value } func (tc *TelegramClient) processEvent(update tgba.Update) { @@ -45,6 +47,7 @@ func (tc *TelegramClient) processEvent(update tgba.Update) { Type: tp, UpdateID: update.UpdateID, Value: f.Interface(), + value: f, }, State: State{}, Caller: tc, diff --git a/rule.go b/rule.go index 4e998f3..abfb87f 100644 --- a/rule.go +++ b/rule.go @@ -2,7 +2,6 @@ package rei import ( "fmt" - "reflect" "strconv" "strings" "unsafe" @@ -24,7 +23,7 @@ func newctrl(service string, o *ctrl.Options[*Ctx]) Rule { if !ctx.Message.Chat.IsPrivate() { gid = ctx.Message.Chat.ID } - return c.Handler(uintptr(unsafe.Pointer(ctx)), gid, reflect.ValueOf(ctx.Value).Elem().FieldByName("From").FieldByName("ID").Int()) + return c.Handler(uintptr(unsafe.Pointer(ctx)), gid, ctx.value.FieldByName("From").FieldByName("ID").Int()) } }