douyan4958 2018-01-30 18:43
浏览 132
已采纳

检查哪些用户将表情符号发送到电报机器人

I need to check what user send a word, not a audio, video, sticker or emoji, so I try to create if statement but I don't know how to check if user send emoji to bot.

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)
}

Full code:

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()
}

So I need to response user only if he send bot string with word, not an audio, video, sticker or emoji.

  • 写回答

1条回答 默认 最新

  • douren0558 2018-02-24 12:09
    关注

    So I don't find answer and left this if statement:

    if reflect.TypeOf(update.Message.Text).Kind() == reflect.String && update.Message.Text != ""
    

    He check if message from user is text not a audio, video, sticker but emoji is text so thay pass it.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊