func (config ChatMemberConfig) values() (url.Values, error) {
	v := url.Values{}
	v.Add("group_id", strconv.FormatInt(config.GroupID, 10))
	v.Add("user_id", strconv.FormatInt(config.UserID, 10))
	v.Add("flag", config.AnonymousFlag)
	return v, nil
}
values returns url.Values representation of ChatMemberConfig.
package qqbotapi
import (
	"net/url"
	"strconv"
	"time"
)
type Chattable interface {
	values() (url.Values, error)
	method() string
}
type BaseChat struct {
	ChatID   int64  
	ChatType string
}
func (chat *BaseChat) values() (url.Values, error) {
	v := url.Values{}
	v.Add("message_type", chat.ChatType)
	switch chat.ChatType {
	case "private":
		v.Add("user_id", strconv.FormatInt(chat.ChatID, 10))
	case "group":
		v.Add("group_id", strconv.FormatInt(chat.ChatID, 10))
	case "discuss":
		v.Add("discuss_id", strconv.FormatInt(chat.ChatID, 10))
	}
	return v, nil
}
type MessageConfig struct {
	BaseChat
	Text       string
	AutoEscape bool
}
func (config MessageConfig) values() (url.Values, error) {
	v, err := config.BaseChat.values()
	if err != nil {
		return v, err
	}
	v.Add("message", config.Text)
	v.Add("auto_escape", strconv.FormatBool(config.AutoEscape))
	return v, nil
}
func (config MessageConfig) method() string {
	return "send_msg"
}
type DeleteMessageConfig struct {
	MessageID int64
}
func (config DeleteMessageConfig) method() string {
	return "delete_msg"
}
func (config DeleteMessageConfig) values() (url.Values, error) {
	v := url.Values{}
	v.Add("message_id", strconv.FormatInt(config.MessageID, 10))
	return v, nil
}
type LikeConfig struct {
	UserID int64
	Times  int
}
func (config LikeConfig) method() string {
	return "send_like"
}
func (config LikeConfig) values() (url.Values, error) {
	v := url.Values{}
	v.Add("user_id", strconv.FormatInt(config.UserID, 10))
	v.Add("times", strconv.Itoa(config.Times))
	return v, nil
}
type ChatMemberConfig struct {
	GroupID       int64
	UserID        int64
	AnonymousFlag string
}