Add some tests, fix copyMessage.
parent
24e02f7ba6
commit
4064ced03f
20
bot.go
20
bot.go
|
@ -668,3 +668,23 @@ func (bot *BotAPI) GetMyCommands() ([]BotCommand, error) {
|
||||||
|
|
||||||
return commands, err
|
return commands, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CopyMessage copy messages of any kind. The method is analogous to the method
|
||||||
|
// forwardMessage, but the copied message doesn't have a link to the original
|
||||||
|
// message. Returns the MessageID of the sent message on success.
|
||||||
|
func (bot *BotAPI) CopyMessage(config CopyMessageConfig) (MessageID, error) {
|
||||||
|
params, err := config.params()
|
||||||
|
if err != nil {
|
||||||
|
return MessageID{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := bot.MakeRequest(config.method(), params)
|
||||||
|
if err != nil {
|
||||||
|
return MessageID{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var messageID MessageID
|
||||||
|
err = json.Unmarshal(resp.Result, &messageID)
|
||||||
|
|
||||||
|
return messageID, err
|
||||||
|
}
|
||||||
|
|
57
bot_test.go
57
bot_test.go
|
@ -73,7 +73,7 @@ func TestSendWithMessage(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := NewMessage(ChatID, "A test message from the test library in telegram-bot-api")
|
msg := NewMessage(ChatID, "A test message from the test library in telegram-bot-api")
|
||||||
msg.ParseMode = "markdown"
|
msg.ParseMode = ModeMarkdown
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -104,6 +104,26 @@ func TestSendWithMessageForward(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCopyMessage(t *testing.T) {
|
||||||
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
msg := NewMessage(ChatID, "A test message from the test library in telegram-bot-api")
|
||||||
|
message, err := bot.Send(msg)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
copyMessageConfig := NewCopyMessage(SupergroupChatID, message.Chat.ID, message.MessageID)
|
||||||
|
messageID, err := bot.CopyMessage(copyMessageConfig)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if messageID.MessageID == message.MessageID {
|
||||||
|
t.Error("copied message ID was the same as original message")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSendWithNewPhoto(t *testing.T) {
|
func TestSendWithNewPhoto(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
@ -724,7 +744,7 @@ func TestDeleteMessage(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := NewMessage(ChatID, "A test message from the test library in telegram-bot-api")
|
msg := NewMessage(ChatID, "A test message from the test library in telegram-bot-api")
|
||||||
msg.ParseMode = "markdown"
|
msg.ParseMode = ModeMarkdown
|
||||||
message, _ := bot.Send(msg)
|
message, _ := bot.Send(msg)
|
||||||
|
|
||||||
deleteMessageConfig := DeleteMessageConfig{
|
deleteMessageConfig := DeleteMessageConfig{
|
||||||
|
@ -742,7 +762,7 @@ func TestPinChatMessage(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := NewMessage(SupergroupChatID, "A test message from the test library in telegram-bot-api")
|
msg := NewMessage(SupergroupChatID, "A test message from the test library in telegram-bot-api")
|
||||||
msg.ParseMode = "markdown"
|
msg.ParseMode = ModeMarkdown
|
||||||
message, _ := bot.Send(msg)
|
message, _ := bot.Send(msg)
|
||||||
|
|
||||||
pinChatMessageConfig := PinChatMessageConfig{
|
pinChatMessageConfig := PinChatMessageConfig{
|
||||||
|
@ -761,7 +781,7 @@ func TestUnpinChatMessage(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := NewMessage(SupergroupChatID, "A test message from the test library in telegram-bot-api")
|
msg := NewMessage(SupergroupChatID, "A test message from the test library in telegram-bot-api")
|
||||||
msg.ParseMode = "markdown"
|
msg.ParseMode = ModeMarkdown
|
||||||
message, _ := bot.Send(msg)
|
message, _ := bot.Send(msg)
|
||||||
|
|
||||||
// We need pin message to unpin something
|
// We need pin message to unpin something
|
||||||
|
@ -776,7 +796,8 @@ func TestUnpinChatMessage(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
unpinChatMessageConfig := UnpinChatMessageConfig{
|
unpinChatMessageConfig := UnpinChatMessageConfig{
|
||||||
ChatID: message.Chat.ID,
|
ChatID: message.Chat.ID,
|
||||||
|
MessageID: message.MessageID,
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := bot.Request(unpinChatMessageConfig); err != nil {
|
if _, err := bot.Request(unpinChatMessageConfig); err != nil {
|
||||||
|
@ -784,6 +805,32 @@ func TestUnpinChatMessage(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUnpinAllChatMessages(t *testing.T) {
|
||||||
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
msg := NewMessage(SupergroupChatID, "A test message from the test library in telegram-bot-api")
|
||||||
|
msg.ParseMode = ModeMarkdown
|
||||||
|
message, _ := bot.Send(msg)
|
||||||
|
|
||||||
|
pinChatMessageConfig := PinChatMessageConfig{
|
||||||
|
ChatID: message.Chat.ID,
|
||||||
|
MessageID: message.MessageID,
|
||||||
|
DisableNotification: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := bot.Request(pinChatMessageConfig); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
unpinAllChatMessagesConfig := UnpinAllChatMessagesConfig{
|
||||||
|
ChatID: message.Chat.ID,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := bot.Request(unpinAllChatMessagesConfig); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPolls(t *testing.T) {
|
func TestPolls(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
|
|
@ -241,6 +241,10 @@ func (config CopyMessageConfig) params() (Params, error) {
|
||||||
return params, err
|
return params, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (config CopyMessageConfig) method() string {
|
||||||
|
return "copyMessage"
|
||||||
|
}
|
||||||
|
|
||||||
// PhotoConfig contains information about a SendPhoto request.
|
// PhotoConfig contains information about a SendPhoto request.
|
||||||
type PhotoConfig struct {
|
type PhotoConfig struct {
|
||||||
BaseFile
|
BaseFile
|
||||||
|
|
12
helpers.go
12
helpers.go
|
@ -52,6 +52,18 @@ func NewForward(chatID int64, fromChatID int64, messageID int) ForwardConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewCopyMessage creates a new copy message.
|
||||||
|
//
|
||||||
|
// chatID is where to send it, fromChatID is the source chat,
|
||||||
|
// and messageID is the ID of the original message.
|
||||||
|
func NewCopyMessage(chatID int64, fromChatID int64, messageID int) CopyMessageConfig {
|
||||||
|
return CopyMessageConfig{
|
||||||
|
BaseChat: BaseChat{ChatID: chatID},
|
||||||
|
FromChatID: fromChatID,
|
||||||
|
MessageID: messageID,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewPhotoUpload creates a new photo uploader.
|
// NewPhotoUpload creates a new photo uploader.
|
||||||
//
|
//
|
||||||
// chatID is where to send it, file is a string path to the file,
|
// chatID is where to send it, file is a string path to the file,
|
||||||
|
|
5
types.go
5
types.go
|
@ -584,6 +584,11 @@ func (m *Message) CommandArguments() string {
|
||||||
return m.Text[entity.Length+1:]
|
return m.Text[entity.Length+1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MessageID represents a unique message identifier.
|
||||||
|
type MessageID struct {
|
||||||
|
MessageID int `json:"message_id"`
|
||||||
|
}
|
||||||
|
|
||||||
// MessageEntity represents one special entity in a text message.
|
// MessageEntity represents one special entity in a text message.
|
||||||
type MessageEntity struct {
|
type MessageEntity struct {
|
||||||
// Type of the entity.
|
// Type of the entity.
|
||||||
|
|
|
@ -286,6 +286,8 @@ var (
|
||||||
_ Chattable = ChatActionConfig{}
|
_ Chattable = ChatActionConfig{}
|
||||||
_ Chattable = ChatInfoConfig{}
|
_ Chattable = ChatInfoConfig{}
|
||||||
_ Chattable = ChatInviteLinkConfig{}
|
_ Chattable = ChatInviteLinkConfig{}
|
||||||
|
_ Chattable = CloseConfig{}
|
||||||
|
_ Chattable = CopyMessageConfig{}
|
||||||
_ Chattable = ContactConfig{}
|
_ Chattable = ContactConfig{}
|
||||||
_ Chattable = DeleteChatPhotoConfig{}
|
_ Chattable = DeleteChatPhotoConfig{}
|
||||||
_ Chattable = DeleteChatStickerSetConfig{}
|
_ Chattable = DeleteChatStickerSetConfig{}
|
||||||
|
@ -306,6 +308,7 @@ var (
|
||||||
_ Chattable = KickChatMemberConfig{}
|
_ Chattable = KickChatMemberConfig{}
|
||||||
_ Chattable = LeaveChatConfig{}
|
_ Chattable = LeaveChatConfig{}
|
||||||
_ Chattable = LocationConfig{}
|
_ Chattable = LocationConfig{}
|
||||||
|
_ Chattable = LogOutConfig{}
|
||||||
_ Chattable = MediaGroupConfig{}
|
_ Chattable = MediaGroupConfig{}
|
||||||
_ Chattable = MessageConfig{}
|
_ Chattable = MessageConfig{}
|
||||||
_ Chattable = PhotoConfig{}
|
_ Chattable = PhotoConfig{}
|
||||||
|
|
Loading…
Reference in New Issue