chunking messages that overflow

This commit is contained in:
2026-01-26 22:59:13 -05:00
parent 7376e8f857
commit 759a188a8e
2 changed files with 35 additions and 1 deletions

View File

@@ -6,6 +6,11 @@ import (
dg "github.com/bwmarrin/discordgo"
)
const (
// the max discord allows for basic messages
MSG_MAX_LENGTH = 2000
)
// the message struct is passed to the command payload providing basic
// message information and needed methods
type Message struct {
@@ -27,8 +32,36 @@ func (m *Message) React(emoji Reaction) error {
return m.sesh.MessageReactionAdd(m.channelID, m.msgID, fmt.Sprint(emoji))
}
// sends response to message
// sends response to message, if the response length is greater than 2000 characters the
// messages are split and sent seperatly
func (m *Message) Respond(res string) error {
if len(res) > MSG_MAX_LENGTH {
for len(res) > 0 {
//send full chunk size allowed by discord
sc := res[:MSG_MAX_LENGTH]
rep := m.sesh.createReply(sc, m.msgID, m.channelID, m.serverID)
_, err := m.sesh.ChannelMessageSendComplex(m.channelID, rep)
if err != nil {
return err
}
res = res[MSG_MAX_LENGTH:]
//if we have left than a full chunk send the rest and break the loop
if len(res) < MSG_MAX_LENGTH {
final := m.sesh.createReply(res, m.msgID, m.channelID, m.serverID)
_, err := m.sesh.ChannelMessageSendComplex(m.channelID, final)
if err != nil {
return err
}
break
}
}
return nil
}
//short enough message to send in one message
rep := m.sesh.createReply(res, m.msgID, m.channelID, m.serverID)
_, err := m.sesh.ChannelMessageSendComplex(m.channelID, rep)
return err