@@ -156,7 +156,7 @@ func InitializeTelegramEndpoint(token string, exitChan <-chan struct{}, database
156156 e .commands = map [string ]handlerWithDescription {
157157 "/new" : {
158158 f : e .handlerNew ,
159- description : "``` /new repo filter\\ _name filter_regexp`` ` \\ -\\ - creates new available subscription" + `
159+ description : "`/new repo filter\\ _name filter_regexp` \\ -\\ - creates new available subscription" + `
160160
161161Example:
162162 ` + "`/new lomik/go\\ -carbon all ^V`" + `
@@ -335,7 +335,10 @@ func (e *TelegramEndpoint) sendMessage(chatID int64, messageID int, message stri
335335 message ,
336336 ).WithParseMode (telego .ModeMarkdownV2 )
337337 if messageID != 0 {
338- msg = msg .WithReplyToMessageID (messageID )
338+ replyParams := & telego.ReplyParameters {
339+ MessageID : messageID ,
340+ }
341+ msg = msg .WithReplyParameters (replyParams )
339342 }
340343
341344 _ , err := e .api .SendMessage (msg )
@@ -354,7 +357,10 @@ func (e *TelegramEndpoint) sendRawMessage(chatID int64, messageID int, message s
354357 message ,
355358 )
356359 if messageID != 0 {
357- msg = msg .WithReplyToMessageID (messageID )
360+ replyParams := & telego.ReplyParameters {
361+ MessageID : messageID ,
362+ }
363+ msg = msg .WithReplyParameters (replyParams )
358364 }
359365
360366 _ , err := e .api .SendMessage (msg )
@@ -498,7 +504,7 @@ func (e *TelegramEndpoint) handlerNew(tokens []string, update *telego.Update) er
498504
499505 feeds .UpdateFeeds ([]* feeds.Feed {feed })
500506
501- return e .sendMessage (update .Message .Chat .ID , update .Message .MessageID , "done" )
507+ return e .sendMessage (update .Message .Chat .ID , update .Message .MessageID , fmt . Sprintf ( "new filter has been created, to subscribe it use `/subscribe %s %s` command" , repo , name ) )
502508}
503509
504510func (e * TelegramEndpoint ) handlerForceProcess (tokens []string , update * telego.Update ) error {
@@ -625,16 +631,35 @@ func (e *TelegramEndpoint) unsubscribe(logger *zap.Logger, chatID int64, url str
625631}
626632
627633func (e * TelegramEndpoint ) handlerList (tokens []string , update * telego.Update ) error {
628- response := "Configured feeds:\n "
634+ responses := make ([]string , 0 , 4 )
635+ response := ""
636+ feedsPerMessage := 50
637+ idx := 0
629638 configs .Config .RLock ()
630639 for _ , feed := range configs .Config .FeedsConfig {
631640 for _ , feedFilter := range feed .Filters {
632641 response = response + "`" + feed .Repo + "`: `" + feedFilter .Name + "`\n "
642+ idx ++
643+ if idx == feedsPerMessage {
644+ responses = append (responses , response )
645+ response = ""
646+ idx = 0
647+ }
633648 }
634649 }
650+ responses = append (responses , response )
635651 configs .Config .RUnlock ()
636652
637- return e .sendMessage (update .Message .Chat .ID , update .Message .MessageID , response )
653+ var err error
654+ for i , response := range responses {
655+ response = fmt .Sprintf ("Configured feeds %v/%v:\n %s" , i + 1 , len (responses ), response )
656+ err2 := e .sendMessage (update .Message .Chat .ID , update .Message .MessageID , response )
657+ if err2 != nil {
658+ e .logger .Error ("error sending list" , zap .Error (err ))
659+ err = err2
660+ }
661+ }
662+ return err
638663}
639664
640665func (e * TelegramEndpoint ) handlerHelp (_ []string , update * telego.Update ) error {
@@ -656,6 +681,7 @@ func (e *TelegramEndpoint) handlerHelp(_ []string, update *telego.Update) error
656681func (e * TelegramEndpoint ) checkUnrecoverableSendError (err error ) bool {
657682 if strings .Contains (err .Error (), "chat not found" ) ||
658683 strings .Contains (err .Error (), "bot was kicked" ) ||
684+ strings .Contains (err .Error (), "the group chat was deleted" ) ||
659685 strings .Contains (err .Error (), "bot was blocked by the user" ) ||
660686 strings .Contains (err .Error (), "not enough rights to send text messages" ) {
661687 return false
0 commit comments