Split long discord output message into the chunks by 2000 characters (#1704)
Signed-off-by: Dmitry Kozlov <dmitry.f.kozlov@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Dominic Wong
						Dominic Wong
					
				
			
			
				
	
			
			
			
						parent
						
							cca8826a1f
						
					
				
				
					commit
					5b161b88f7
				
			| @@ -70,14 +70,34 @@ func (dc *discordConn) Recv(event *input.Event) error { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func ChunkString(s string, chunkSize int) []string { | ||||||
|  | 	var chunks []string | ||||||
|  | 	runes := []rune(s) | ||||||
|  |  | ||||||
|  | 	if len(runes) == 0 { | ||||||
|  | 		return []string{s} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for i := 0; i < len(runes); i += chunkSize { | ||||||
|  | 		nn := i + chunkSize | ||||||
|  | 		if nn > len(runes) { | ||||||
|  | 			nn = len(runes) | ||||||
|  | 		} | ||||||
|  | 		chunks = append(chunks, string(runes[i:nn])) | ||||||
|  | 	} | ||||||
|  | 	return chunks | ||||||
|  | } | ||||||
|  |  | ||||||
| func (dc *discordConn) Send(e *input.Event) error { | func (dc *discordConn) Send(e *input.Event) error { | ||||||
| 	fields := strings.Split(e.To, ":") | 	fields := strings.Split(e.To, ":") | ||||||
| 	_, err := dc.master.session.ChannelMessageSend(fields[0], string(e.Data)) | 	for _, chunk := range ChunkString(string(e.Data), 2000) { | ||||||
|  | 		_, err := dc.master.session.ChannelMessageSend(fields[0], chunk) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			if logger.V(logger.ErrorLevel, logger.DefaultLogger) { | 			if logger.V(logger.ErrorLevel, logger.DefaultLogger) { | ||||||
| 				logger.Error("[bot][loop][send]", err) | 				logger.Error("[bot][loop][send]", err) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user