检查哪些用户向电报机器人发送表情符号
Check what user send emoji to telegram bot
我需要检查用户发送了一个词,而不是音频、视频、贴纸或表情符号,所以我尝试创建 if 语句,但我不知道如何检查用户是否向机器人发送了表情符号。
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != "" //Check if message from user is not emoji {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's a Text")
bot.Send(msg)
} else {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's a not Text")
bot.Send(msg)
}
完整代码:
package main
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"reflect"
"runtime"
"strings"
"github.com/Syfaro/telegram-bot-api"
)
func telegramBot() {
//Create bot
bot, err := tgbotapi.NewBotAPI("TOKEN")
if err != nil {
log.Panic(err)
}
//Check if bot autorized
bot.Debug = true
log.Printf("Autorized on account %s", bot.Self.UserName)
//Set update timeout
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
//Get updates from bot
updates, err := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != "" {
//Create search url
url := update.Message.Text
request := "https://en.wikipedia.org/w/api.php?action=opensearch&search=" + url + "&limit=1&origin=*&format=json"
//Check from who was arrived message and send to him answer from wikipedia
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Message to user")
//Send message
bot.Send(msg)
} else {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's not a Text")
//Send message
bot.Send(msg)
}
}
}
func main() {
//Set maximum cpu cores to use
num := runtime.NumCPU()
runtime.GOMAXPROCS(num)
//Call Bot
telegramBot()
}
所以我只需要在用户发送带有单词的 bot 字符串时响应用户,而不是音频、视频、贴纸或表情符号。
所以我没有找到答案并留下了这个 if 语句:
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != ""
他检查来自用户的消息是否是文本而不是音频、视频、贴纸,但表情符号是文本,以便传递它。
我需要检查用户发送了一个词,而不是音频、视频、贴纸或表情符号,所以我尝试创建 if 语句,但我不知道如何检查用户是否向机器人发送了表情符号。
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != "" //Check if message from user is not emoji {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's a Text")
bot.Send(msg)
} else {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's a not Text")
bot.Send(msg)
}
完整代码:
package main
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"reflect"
"runtime"
"strings"
"github.com/Syfaro/telegram-bot-api"
)
func telegramBot() {
//Create bot
bot, err := tgbotapi.NewBotAPI("TOKEN")
if err != nil {
log.Panic(err)
}
//Check if bot autorized
bot.Debug = true
log.Printf("Autorized on account %s", bot.Self.UserName)
//Set update timeout
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
//Get updates from bot
updates, err := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != "" {
//Create search url
url := update.Message.Text
request := "https://en.wikipedia.org/w/api.php?action=opensearch&search=" + url + "&limit=1&origin=*&format=json"
//Check from who was arrived message and send to him answer from wikipedia
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Message to user")
//Send message
bot.Send(msg)
} else {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "It's not a Text")
//Send message
bot.Send(msg)
}
}
}
func main() {
//Set maximum cpu cores to use
num := runtime.NumCPU()
runtime.GOMAXPROCS(num)
//Call Bot
telegramBot()
}
所以我只需要在用户发送带有单词的 bot 字符串时响应用户,而不是音频、视频、贴纸或表情符号。
所以我没有找到答案并留下了这个 if 语句:
if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != ""
他检查来自用户的消息是否是文本而不是音频、视频、贴纸,但表情符号是文本,以便传递它。