@@ -521,6 +521,117 @@ func (bot *BotAPI) KickChatMember(config ChatMemberConfig) (APIResponse, error)
521521 return bot .MakeRequest ("kickChatMember" , v )
522522}
523523
524+ // LeaveChat makes the bot leave the chat.
525+ func (bot * BotAPI ) LeaveChat (config ChatConfig ) (APIResponse , error ) {
526+ v := url.Values {}
527+
528+ if config .SuperGroupUsername == "" {
529+ v .Add ("chat_id" , strconv .FormatInt (config .ChatID , 10 ))
530+ } else {
531+ v .Add ("chat_id" , config .SuperGroupUsername )
532+ }
533+
534+ bot .debugLog ("leaveChat" , v , nil )
535+
536+ return bot .MakeRequest ("leaveChat" , v )
537+ }
538+
539+ // GetChat gets information about a chat.
540+ func (bot * BotAPI ) GetChat (config ChatConfig ) (Chat , error ) {
541+ v := url.Values {}
542+
543+ if config .SuperGroupUsername == "" {
544+ v .Add ("chat_id" , strconv .FormatInt (config .ChatID , 10 ))
545+ } else {
546+ v .Add ("chat_id" , config .SuperGroupUsername )
547+ }
548+
549+ resp , err := bot .MakeRequest ("getChat" , v )
550+ if err != nil {
551+ return Chat {}, err
552+ }
553+
554+ var chat Chat
555+ err = json .Unmarshal (resp .Result , & chat )
556+
557+ bot .debugLog ("getChat" , v , chat )
558+
559+ return chat , err
560+ }
561+
562+ // GetChatAdministrators gets a list of administrators in the chat.
563+ //
564+ // If none have been appointed, only the creator will be returned.
565+ // Bots are not shown, even if they are an administrator.
566+ func (bot * BotAPI ) GetChatAdministrators (config ChatConfig ) ([]ChatMember , error ) {
567+ v := url.Values {}
568+
569+ if config .SuperGroupUsername == "" {
570+ v .Add ("chat_id" , strconv .FormatInt (config .ChatID , 10 ))
571+ } else {
572+ v .Add ("chat_id" , config .SuperGroupUsername )
573+ }
574+
575+ resp , err := bot .MakeRequest ("getChatAdministrators" , v )
576+ if err != nil {
577+ return []ChatMember {}, err
578+ }
579+
580+ var members []ChatMember
581+ err = json .Unmarshal (resp .Result , & members )
582+
583+ bot .debugLog ("getChatAdministrators" , v , members )
584+
585+ return members , err
586+ }
587+
588+ // GetChatMembersCount gets the number of users in a chat.
589+ func (bot * BotAPI ) GetChatMembersCount (config ChatConfig ) (int , error ) {
590+ v := url.Values {}
591+
592+ if config .SuperGroupUsername == "" {
593+ v .Add ("chat_id" , strconv .FormatInt (config .ChatID , 10 ))
594+ } else {
595+ v .Add ("chat_id" , config .SuperGroupUsername )
596+ }
597+
598+ resp , err := bot .MakeRequest ("getChatMembersCount" , v )
599+ if err != nil {
600+ return - 1 , err
601+ }
602+
603+ var count int
604+ err = json .Unmarshal (resp .Result , & count )
605+
606+ bot .debugLog ("getChatMembersCount" , v , count )
607+
608+ return count , err
609+ }
610+
611+ // GetChatMember gets a specific chat member.
612+ func (bot * BotAPI ) GetChatMember (config ChatConfigWithUser ) (ChatMember , error ) {
613+ v := url.Values {}
614+
615+ if config .SuperGroupUsername == "" {
616+ v .Add ("chat_id" , strconv .FormatInt (config .ChatID , 10 ))
617+ } else {
618+ v .Add ("chat_id" , config .SuperGroupUsername )
619+ }
620+ v .Add ("user_id" , strconv .Itoa (config .UserID ))
621+
622+ resp , err := bot .MakeRequest ("getChatMember" , v )
623+ if err != nil {
624+ return ChatMember {}, err
625+ }
626+
627+ var member ChatMember
628+ err = json .Unmarshal (resp .Result , & member )
629+
630+ bot .debugLog ("getChatMember" , v , member )
631+
632+ return member , err
633+ }
634+
524635// UnbanChatMember unbans a user from a chat. Note that this only will work
525636// in supergroups, and requires the bot to be an admin.
526637func (bot * BotAPI ) UnbanChatMember (config ChatMemberConfig ) (APIResponse , error ) {
0 commit comments