1
0
telegram/helpers_entity.go

130 lines
2.1 KiB
Go
Raw Normal View History

2017-10-17 11:08:09 +00:00
package telegram
import (
"fmt"
"net/url"
)
2017-10-17 11:08:09 +00:00
func (entity *MessageEntity) ParseURL(messageText string) *url.URL {
if entity == nil {
return nil
}
var err error
link := new(url.URL)
switch {
case entity.IsTextLink():
link, err = url.Parse(entity.URL)
case entity.IsURL():
if messageText == "" {
return nil
}
rawMessageText := []rune(messageText)
if len(rawMessageText) < (entity.Offset + entity.Length) {
return nil
}
from := entity.Offset
to := from + entity.Length
rawURL := string([]rune(messageText)[from:to])
link, err = url.Parse(rawURL)
if err == nil && link.Scheme == "" {
link, err = url.Parse(fmt.Sprint("http://", link))
}
}
if err != nil {
return nil
2017-10-17 11:08:09 +00:00
}
return link
2017-10-17 11:08:09 +00:00
}
func (entity *MessageEntity) IsBold() bool {
if entity == nil {
return false
}
return entity.Type == EntityBold
}
func (entity *MessageEntity) IsBotCommand() bool {
if entity == nil {
return false
}
return entity.Type == EntityBotCommand
}
func (entity *MessageEntity) IsCode() bool {
if entity == nil {
return false
}
return entity.Type == EntityCode
}
func (entity *MessageEntity) IsEmail() bool {
if entity == nil {
return false
}
return entity.Type == EntityEmail
}
func (entity *MessageEntity) IsHashTag() bool {
if entity == nil {
return false
}
return entity.Type == EntityHashtag
}
func (entity *MessageEntity) IsItalic() bool {
if entity == nil {
return false
}
return entity.Type == EntityItalic
}
func (entity *MessageEntity) IsMention() bool {
if entity == nil {
return false
}
return entity.Type == EntityMention
}
func (entity *MessageEntity) IsPre() bool {
if entity == nil {
return false
}
return entity.Type == EntityPre
}
func (entity *MessageEntity) IsTextLink() bool {
if entity == nil {
return false
}
return entity.Type == EntityTextLink
}
func (entity *MessageEntity) IsTextMention() bool {
if entity == nil {
return false
}
return entity.Type == EntityTextMention
}
func (entity *MessageEntity) IsURL() bool {
if entity == nil {
return false
}
return entity.Type == EntityURL
}