Skip to content

Commit

Permalink
generic forward message (#434)
Browse files Browse the repository at this point in the history
  • Loading branch information
eatmoreapple authored Dec 4, 2023
1 parent 61a634f commit be1350a
Showing 1 changed file with 30 additions and 24 deletions.
54 changes: 30 additions & 24 deletions user.go
Original file line number Diff line number Diff line change
Expand Up @@ -668,59 +668,65 @@ func (s *Self) ForwardMessageToGroups(msg *SentMessage, delay time.Duration, gro
return s.forwardMessage(msg, delay, members...)
}

// sendTextToMembers 发送文本消息给群组或者好友
func (s *Self) sendTextToMembers(text string, delay time.Duration, members ...*User) error {
type SendMessageFunc func() (*SentMessage, error)

func (s *Self) sendMessageToMember(sendMessageFunc SendMessageFunc, delay time.Duration, members ...*User) error {
if len(members) == 0 {
return nil
}
user := members[0]
msg, err := s.sendTextToUser(user.UserName, text)
msg, err := sendMessageFunc()
if err != nil {
return err
}
time.Sleep(delay)
return s.forwardMessage(msg, delay, members[1:]...)
return s.forwardMessage(msg, delay, members...)
}

// sendTextToMembers 发送文本消息给群组或者好友
func (s *Self) sendTextToMembers(text string, delay time.Duration, members ...*User) error {
if len(members) == 0 {
return nil
}
var sendMessageFunc SendMessageFunc = func() (*SentMessage, error) {
user := members[0]
return s.sendTextToUser(user.UserName, text)
}
return s.sendMessageToMember(sendMessageFunc, delay, members[1:]...)
}

// sendImageToMembers 发送图片消息给群组或者好友
func (s *Self) sendImageToMembers(img io.Reader, delay time.Duration, members ...*User) error {
if len(members) == 0 {
return nil
}
user := members[0]
msg, err := s.sendImageToUser(user.UserName, img)
if err != nil {
return err
var sendMessageFunc SendMessageFunc = func() (*SentMessage, error) {
user := members[0]
return s.sendImageToUser(user.UserName, img)
}
time.Sleep(delay)
return s.forwardMessage(msg, delay, members[1:]...)
return s.sendMessageToMember(sendMessageFunc, delay, members[1:]...)
}

// sendVideoToMembers 发送视频消息给群组或者好友
func (s *Self) sendVideoToMembers(video io.Reader, delay time.Duration, members ...*User) error {
if len(members) == 0 {
return nil
}
user := members[0]
msg, err := s.sendVideoToUser(user.UserName, video)
if err != nil {
return err
var sendMessageFunc SendMessageFunc = func() (*SentMessage, error) {
user := members[0]
return s.sendVideoToUser(user.UserName, video)
}
time.Sleep(delay)
return s.forwardMessage(msg, delay, members[1:]...)
return s.sendMessageToMember(sendMessageFunc, delay, members[1:]...)
}

// sendFileToMembers 发送文件消息给群组或者好友
func (s *Self) sendFileToMembers(file io.Reader, delay time.Duration, members ...*User) error {
if len(members) == 0 {
return nil
}
user := members[0]
msg, err := s.sendFileToUser(user.UserName, file)
if err != nil {
return err
var sendMessageFunc SendMessageFunc = func() (*SentMessage, error) {
user := members[0]
return s.sendFileToUser(user.UserName, file)
}
time.Sleep(delay)
return s.forwardMessage(msg, delay, members[1:]...)
return s.sendMessageToMember(sendMessageFunc, delay, members[1:]...)
}

// SendTextToFriends 发送文本消息给好友
Expand Down

0 comments on commit be1350a

Please sign in to comment.