zoukankan      html  css  js  c++  java
  • 创建telegram 机器人 并发送消息

    telegram是国外常用的聊天功能,功能很强大,除了聊天还可以玩游戏,传文件,视频,声音,投票,群组。当然,这些跟qq,微信都很类似了。但是它毕竟是国外最常用的IM之一。telegram有个聊天机器人可以自动发消息,也是挺有意思的。它还开放了api,可以自己创建bot,通过api发送消息,视频,声音,文件等功能。下面,我简单介绍下怎么新建一个bot
     
    telegram有两种api,一种是bot api,一种是telegram api。bot api是基于http访问,telegram api是基于mtproto访问,访问需要加密,相对要复杂一些。后者也可以实现发送消息等功能。这里我只说第一种bot api。
     
    首先要创建一个bot。访问
    https://telegram.me/botfather
    它会提示你用telegram打开。然后你就打开了botfarther的聊天对话框。输入
    /newbot 
    回车发送。botfarther会反馈
    Alright, a new bot. How are we going to call it? Please choose a name for your bot.
     
    输入你要创建的bot名字。例如david_bot,回车发送
     
    它会反馈
    Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
     
    我再输入 DavidBot。这是这个机器人的名字。
     
    它会反馈
    Sorry, this username is already taken. Please try something different.
     
    这名字已经被用了。我们换一个
     
    GZ_David_Bot
     
    它会反馈
    BotFather, [16.02.17 14:23]
    Done! Congratulations on your new bot. You will find it at t.me/Gz_David_Bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
     
    Use this token to access the HTTP API:
    xxx:xxx
     

    For a description of the Bot API, see this page: https://core.telegram.org/bots/api  
    

     
    这里它生成了api token。我们记下它。以后api请求都会用到。如果需要帮助,输入 /help 
     
    输入/token 可以重新生成一个token。
    /revoke 可以撤销一个token
     
    我们需要用这个bot来发送消息,首先需要创建一个group,加入一些人,同时将这个bot也加进去。然后在这个group中发送消息。类似 /hello @GZ_David_Bot
     
    然后访问

    https://api.telegram.org/botxxx:xxx/getUpdates  
    

     
    我们会获取到一个json

    {  
        "ok" : true,  
        "result" : [{  
                "update_id" : xxx,  
                "message" : {  
                    "message_id" : 4,  
                    "from" : {  
                        "id" : xxx,  
                        "first_name" : "david",  
                        "last_name" : "huang",  
                        "username" : "davidhuang"  
                    },  
                    "chat" : {  
                        "id" : -xxx,  
                        "title" : "bot",  
                        "type" : "group",  
                        "all_members_are_administrators" : true  
                    },  
                    "date" : xxx,  
                    "text" : "/hello @GZ_David_Bot",  
                    "entities" : [{  
                            "type" : "bot_command",  
                            "offset" : 0,  
                            "length" : 6  
                        }  
                    ]  
                }  
            },  
        ]  
    }  
    

    这里,我们看到有个id,指的就是当前group的id。我们记下它 。然后执行以下curl。
    botXXX:YYYY 指的是bot+token,一定要加上bot前缀
    chat_id就是上面的id,注意是负数,必须有-
    发送内容是=my sample text

    curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat\_id=-zzzzzzzzzz&text=my sample text"
    

    或者在浏览器地址输入:

    https://api.telegram.org/botXXX:YYYY/sendMessage?chat\_id=-zzzzzzzzzz&text=my sample text
    

    执行完,这个group就收到消息了。
     
    api git:
    https://github.com/unreal4u/telegram-api/graphs/contributors
    但是悲剧的是,它只支持php7.
    https://github.com/unreal4u/telegram-api/wiki
     
    另外,也可以通过webhook api获取聊天记录等功能。但是这个api要求我们的站点必须是https证书
     
    还有个bot sdk,它只要php5.5就可以了
    https://telegram-bot-sdk.readme.io/reference#forwardmessage
    https://github.com/irazasyed/telegram-bot-sdk
    https://telegram-bot-sdk.readme.io/v2.0/reference
    sdk 文档:
    https://telegram-bot-sdk.readme.io/docs
    安装 
    composer require irazasyed/telegram-bot-sdk
     
    这个sdk包含了所有的telegram bot api,例如支持command,keyboard,webhook
     
    提示
    浏览器调用telegram接口需要提子,
    在浏览器地址输入:

    https://api.telegram.org/bot1071007686:AAHjbsMuHNskkLbBPfze2ZHaNUV4LJidNg8/sendMessage?chat_id=-433336330&text=helloworld
    

    代码调试的话需要部署一台海外的web服务器去调用telegram api接口,以便于调试

     
    参考文档:
    https://fullmeter.com/blog/?p=14
    http://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id-ruby-gem-telegram-bot
    https://core.telegram.org/bots
    https://core.telegram.org/bots/api
     
    文章参考:https://blog.csdn.net/hc13097240190/article/details/80745446

  • 相关阅读:
    拦截器
    Mysql修改字段类型,修改字段名
    1.Spring对JDBC整合支持
    由system.currentTimeMillis() 获得当前的时间
    spring 对jdbc的简化
    spring对JDBC的整合支持
    java 运行时异常与非运行时异常理解
    MySQL5.7 的新特点
    基于 SSL 的 Nginx 反向代理
    如何使用 lsyncd 实时同步并执行 shell 命令
  • 原文地址:https://www.cnblogs.com/KillBugMe/p/13140226.html
Copyright © 2011-2022 走看看