mirror of
https://github.com/tucnak/telebot
synced 2024-11-11 01:10:39 +00:00
Pin/Unpin methods added.
This commit is contained in:
parent
83eb527fe5
commit
af9f8f00da
66
admin.go
66
admin.go
@ -1,8 +1,11 @@
|
|||||||
package telebot
|
package telebot
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Rights is a list of privileges available to chat members.
|
// Rights is a list of privileges available to chat members.
|
||||||
@ -137,3 +140,66 @@ func (b *Bot) Promote(chat *Chat, member *ChatMember) error {
|
|||||||
|
|
||||||
return extractOkResponse(respJSON)
|
return extractOkResponse(respJSON)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AdminsOf return a member list of chat admins.
|
||||||
|
//
|
||||||
|
// On success, returns an Array of ChatMember objects that
|
||||||
|
// contains information about all chat administrators except other bots.
|
||||||
|
// If the chat is a group or a supergroup and
|
||||||
|
// no administrators were appointed, only the creator will be returned.
|
||||||
|
func (b *Bot) AdminsOf(chat *Chat) ([]ChatMember, error) {
|
||||||
|
params := map[string]string{
|
||||||
|
"chat_id": chat.Recipient(),
|
||||||
|
}
|
||||||
|
|
||||||
|
respJSON, err := b.sendCommand("getChatAdministrators", params)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp struct {
|
||||||
|
Ok bool
|
||||||
|
Result []ChatMember
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(respJSON, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "bad response json")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !resp.Ok {
|
||||||
|
return nil, errors.Errorf("api error: %s", resp.Description)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp.Result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Len return the number of members in a chat.
|
||||||
|
func (b *Bot) Len(chat *Chat) (int, error) {
|
||||||
|
params := map[string]string{
|
||||||
|
"chat_id": chat.Recipient(),
|
||||||
|
}
|
||||||
|
|
||||||
|
respJSON, err := b.sendCommand("getChatMembersCount", params)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var resp struct {
|
||||||
|
Ok bool
|
||||||
|
Result int
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(respJSON, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return 0, errors.Wrap(err, "bad response json")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !resp.Ok {
|
||||||
|
return 0, errors.Errorf("api error: %s", resp.Description)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp.Result, nil
|
||||||
|
}
|
||||||
|
101
bot.go
101
bot.go
@ -616,6 +616,44 @@ func (b *Bot) Leave(chat *Chat) error {
|
|||||||
return extractOkResponse(respJSON)
|
return extractOkResponse(respJSON)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use this method to pin a message in a supergroup or a channel.
|
||||||
|
//
|
||||||
|
// It supports telebot.Silent option.
|
||||||
|
func (b *Bot) Pin(message Editable, options ...interface{}) error {
|
||||||
|
messageID, chatID := message.MessageSig()
|
||||||
|
|
||||||
|
params := map[string]string{
|
||||||
|
"chat_id": strconv.FormatInt(chatID, 10),
|
||||||
|
"message_id": strconv.Itoa(messageID),
|
||||||
|
}
|
||||||
|
|
||||||
|
sendOpts := extractOptions(options)
|
||||||
|
embedSendOptions(params, sendOpts)
|
||||||
|
|
||||||
|
respJSON, err := b.sendCommand("pinChatMessage", params)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return extractOkResponse(respJSON)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use this method to unpin a message in a supergroup or a channel.
|
||||||
|
//
|
||||||
|
// It supports telebot.Silent option.
|
||||||
|
func (b *Bot) Unpin(chat *Chat) error {
|
||||||
|
params := map[string]string{
|
||||||
|
"chat_id": chat.Recipient(),
|
||||||
|
}
|
||||||
|
|
||||||
|
respJSON, err := b.sendCommand("upinChatMessage", params)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return extractOkResponse(respJSON)
|
||||||
|
}
|
||||||
|
|
||||||
// ChatByID fetches chat info of its ID.
|
// ChatByID fetches chat info of its ID.
|
||||||
//
|
//
|
||||||
// Including current name of the user for one-on-one conversations,
|
// Including current name of the user for one-on-one conversations,
|
||||||
@ -650,69 +688,6 @@ func (b *Bot) ChatByID(id string) (*Chat, error) {
|
|||||||
return resp.Result, nil
|
return resp.Result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AdminsOf return a member list of chat admins.
|
|
||||||
//
|
|
||||||
// On success, returns an Array of ChatMember objects that
|
|
||||||
// contains information about all chat administrators except other bots.
|
|
||||||
// If the chat is a group or a supergroup and
|
|
||||||
// no administrators were appointed, only the creator will be returned.
|
|
||||||
func (b *Bot) AdminsOf(chat *Chat) ([]ChatMember, error) {
|
|
||||||
params := map[string]string{
|
|
||||||
"chat_id": chat.Recipient(),
|
|
||||||
}
|
|
||||||
|
|
||||||
respJSON, err := b.sendCommand("getChatAdministrators", params)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var resp struct {
|
|
||||||
Ok bool
|
|
||||||
Result []ChatMember
|
|
||||||
Description string `json:"description"`
|
|
||||||
}
|
|
||||||
|
|
||||||
err = json.Unmarshal(respJSON, &resp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "bad response json")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !resp.Ok {
|
|
||||||
return nil, errors.Errorf("api error: %s", resp.Description)
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.Result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Len return the number of members in a chat.
|
|
||||||
func (b *Bot) Len(chat *Chat) (int, error) {
|
|
||||||
params := map[string]string{
|
|
||||||
"chat_id": chat.Recipient(),
|
|
||||||
}
|
|
||||||
|
|
||||||
respJSON, err := b.sendCommand("getChatMembersCount", params)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var resp struct {
|
|
||||||
Ok bool
|
|
||||||
Result int
|
|
||||||
Description string `json:"description"`
|
|
||||||
}
|
|
||||||
|
|
||||||
err = json.Unmarshal(respJSON, &resp)
|
|
||||||
if err != nil {
|
|
||||||
return 0, errors.Wrap(err, "bad response json")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !resp.Ok {
|
|
||||||
return 0, errors.Errorf("api error: %s", resp.Description)
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.Result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ProfilePhotosOf return list of profile pictures for a user.
|
// ProfilePhotosOf return list of profile pictures for a user.
|
||||||
func (b *Bot) ProfilePhotosOf(user *User) ([]Photo, error) {
|
func (b *Bot) ProfilePhotosOf(user *User) ([]Photo, error) {
|
||||||
params := map[string]string{
|
params := map[string]string{
|
||||||
|
Loading…
Reference in New Issue
Block a user