package moon import ( "github.com/NicoNex/echotron/v3" "github.com/davecgh/go-spew/spew" ) // Telegram основная горутинка, реализующая бота. func Telegram(cfg MyConfig) { Tg = echotron.NewAPI(cfg.Token) Log.Infof("Starting api update poller loop") for u := range echotron.PollingUpdatesOptions(cfg.Token, true, echotron.UpdateOptions{ AllowedUpdates: []echotron.UpdateType{ "message", "edited_message", "channel_post", "edited_channel_post", "message_reaction", "message_reaction_count", "inline_query", "chosen_inline_result", "callback_query", "poll", "poll_answer", "my_chat_member", "chat_member", "chat_join_request", "chat_boost", "removed_chat_boost", }, }) { telegramMsgParser(u) } } // telegramMsgParser parses events generated by echotron. func telegramMsgParser(msg *echotron.Update) { switch { case msg.Message != nil && msg.Message.Text != "": textMessage(msg) case msg.EditedMessage != nil: editedMessage(msg) case msg.ChatMember != nil: chatMemberUpdated(msg) // New members entered to chat. case msg.Message != nil && msg.Message.NewChatMembers != nil: newChatMembers(msg) // Chat member leaves chat. case msg.Message != nil && msg.Message.LeftChatMember != nil: leftChatMember(msg) case msg.Message != nil && msg.Message.Animation != nil: animation(msg) case msg.MessageReaction != nil: reaction(msg) case msg.MessageReactionCount != nil: reactionCount(msg) case msg.Message != nil && msg.Message.Photo != nil: photo(msg) default: Log.Debug(spew.Sdump(msg)) } } /* vim: set ft=go noet ai ts=4 sw=4 sts=4: */