上个周末,我从零开始做了一个用于检索影戏、演员!以及获取影戏资讯的 Telegram Bot。于是有了这篇文章,用来分享和记载我第一次制做 Telegram Bot 的過逞。

链接: https://t.me/moviee_info_bot

源码: https://github.com/yiukuenchu/moviee

为了控制篇幅便于阅读,本文并非具体教程,而是对整个過逞的梳理以及一些我以为值得一提的工具。假如你想学习做一个 Telegram Bot,提议将本文和上面提供的项目代码,配合别的文档食用。

通过阅读本文,你将可以:

  • 对制作 Telegram Bot 布满信心 😊
  • 理解我制作这个 Telegram Bot 的大要流程
moviee 的截图

前期预备

  • 为了方便开发调试,在电脑上打开 Telegram 官网 ,并下载桌面版本的 Telegram。
  • @BotFather 是一个用来管理全部 Bots 的 Telegram Bot。在内里用 /newbot 下令创建一个 Bot,记载下返回的 Token。
  • 過逞分别

    1. 引入模块

    选择要引入的模块,固然随着开发過逞一样平常会不停增长需要用到的模块。但一开始肯定要引入一个 Telegram Bot API。官方为制作 Telegram Bot 提供了多种多种语言的选择,每种语言又提供了多种 API。我在这里选择了 Node.js,这里建议一个使用起来较为简单的 Node.js Telegram Bot API 。我们在终端进入项目文件夹后,用 npm install node-telegram-bot-api 就能引入这个模块啦。然后在代码中用这个模块创建一个 Bot 实体,好比:

    const TelegramBot = require('node-telegram-bot-api');
    const bot = new TelegramBot(token, {polling: true});

    这里 {polling: true} 是指我们用 polling 轮询的方法获取用户的指令。

    2. 绑定 Bot

    我们怎么样绑定我们创建的 Bot 呢?对的,就是在代码中引入上面的 Bot Token。好比说你的 Token 是 123456:abcdefghijk。那么在代码中:

    const token = '123456:abcdefghijk';

    3. 开发功能

    接下来就可以开发 Bot 的功能啦。假如你用的是上述第 1 步建议的 API,那么尽力建议参考 这个文档 ,跟着内里的步骤实现一个简单的功能。好比:

    bot.onText(/\/start/, (msg) => {
    bot.sendMessage(msg.chat.id, "Welcome");
    });

    上面代码实现的效果是,当用户对 Bot 发送 /start 消息时,Bot 就会回答一句 Welcome。

    类似地,通过 bot.sendPhoto 可以让 Bot 发送一张图片。Bot 的很多其他行为都包含在这个 API 中,发挥想象便可以实现一些风趣的功能。

    4. 摆设上线

    此时,在调试的過逞中我发现 Bot 是无法对用户的指令作出回应的,由于它还没有连接到 Bot Server。因此这个项目中我在开发過逞中便将项目摆设在服务器上以方便调试,这里我选择了摆设在 Heroku 。

    但紧接着,我发现了一个问题,服务开启一段时间后, Bot 便不再对指令作出回应。

    我在后台察看服务的 Logs 并根据 Heroku 官方文档找到了缘故: Heroku 的免费账号限定服务假如一段时间内没有行动,便会主动进入休眠状态。

    免费账户限定 Dyno 主动进入休眠

    为了制止这种环境,我用 express 的服务让服务器连续监听一个端口,使得这个服务器连续工作,不主动进入休眠状态。我们用 npm install express 安装 express 模块,接着在代码中:

    // 引入 express
    const express = require('express');
    const app = express();
    // 监听端口
    const port = process.env.PORT;
    app.listen(port);

    这样,就能让你的 Telegram Bot 24/7 不歇工作啦。

    其他说明

    1. 我做的这个 Telegram Bot 的影戏数据出处 TMDb ,假如你感爱好,可以注册登录后在 TMDb API 页面天生一个 API Key,根据 TMDb API 官方文档在你的项目中使用这项服务。
    2. 在解决服务主动休眠的问题时,我发现了 Kaffeine 。这是一个解决 Heroku 免费账户限定服务器主动休眠问题的项目,它的思绪是每隔一段时间 ping 你的服务 URL。类似的项目另有 UptimeRobot 等。但这些毕竟是第三方服务,安全漏洞值得思量。
    3. Heroku 免费账户假如绑定了信用卡,可以通过添加 New Relic 这个 add-on,制止服务器主动休眠。

    小结

    本文列出了制作一个 24/7 Telegram Bot 的大要過逞。虽然 Telegram 在国内的用户只有很小一部分,但它本身的可发掘性是摆在那边的。对于编程感爱好的小同伴不妨以 Telegram Bot 作为出发点开始学习。而对于乐意折腾的用户来说,假如能在这个過逞中养成「碰到问题,查找文档,解决问题」的思路方法,也是收获了一种解决问题的履历嘛。🔧


    telegrambot怎么用

    什么是电报机器人 (Telegram Bot)?

    电报机器人就像一个机器人,可以主动为您实行使命,比方 答复成员的问题或在指定时间发送通知 。

    我可以创建自己的机器人吗?怎样操作?

    固然可以。 Telegram用户可以通过与官方@BotFather攀谈来创建他们自己的 Telegram机器人。

    首先,通过以下链接连接到 @BotFather : https://telegram.me/BotFather 。当在电报中打开与 BotFather 的聊天窗口时,按下 Start 按钮。

    你会看到像这样的消息:

    Telegram官方BotFather的截图

    /newbot 下令,并输入您的机器人的名称。

    Telegram官方BotFather的截图

    在这之后,您必须为机器人设定用户名。根据屏幕上的说明操作即可。

    Telegram官方BotFather的截图

    选择用户名后,您的机器人将主动创建并可以使用。然后,您将看到如下消息。

    Telegram官方BotFather的截图

    请留意: API Token 是机器人与Telegram系统通讯的重要。请保持安全! 不要通过电子邮件或除 Telegram 以外任何!其他即时消息应用程序发送机器人令牌。

    机器人创建好了,怎样托管到 TeleMe 上?

    请 登录您的TeleMe工作台 。选择 “我的Bot”画面,然后按右上角的“添加我的Bot”按钮。然后在弹出框中输入,您的Bot的 API Token。通过验证之后,就成功将您的 Bot 到 TeleMe 平台了。

    Telegram官方BotFather的截图

    机器人已经托管到 TeleMe,怎样在我的群中使用这个机器人?

    当您将机器人托管到 TeleMe 平台之后,就可以在您所管理的群中通过调换机器人来!使用您自己的机器人管理您的群了。

    调换机器人的操作步骤,请见以下视频。

    假如我的机器人 API Token 泄漏了怎么办?

    不要惶恐。这是您的机器人,您可以随时撤除其机器人 Token。只需与@BotFather对话,然后输入 /revoke 下令。将为您的机器人公布新 Token 。

    我可以变动机器人的名称吗?和它的照片?

    是的,您可以编辑机器人的名称或为机器人上传新照片。
    只需与@BotFather对话,然后输入 /mybots 下令。单击列表中的机器人,然后单击 Edit Bot

    这些操尴尬刁难我来说太庞杂了,你能帮助吗?

    可以。 TeleMe 为 企业版 用户提供专门的客户支持服务。请与 @telemedotio 联系,让我们为您立即解决这些问题。

    介绍

    差别的方法及其参数用于实现您如今创建的电报机器人的盼望行为(盼望如此)。

    查询的基本布局是(如“使用BotFather创建机器人”中所述): https://api.telegram.org/bot*BOTTOKEN*/*METHOD*?*ARGUMENT1*=*VALUE1*&*ARGUMENT2*=*VALUE2* ://api.telegram.org/bot*BOTTOKEN*/*METHOD*?* ARGUMENT1 * https://api.telegram.org/bot*BOTTOKEN*/*METHOD*?*ARGUMENT1*=*VALUE1*&*ARGUMENT2*=*VALUE2* VALUE1 * https://api.telegram.org/bot*BOTTOKEN*/*METHOD*?*ARGUMENT1*=*VALUE1*&*ARGUMENT2*=*VALUE2* ARGUMENT2 https://api.telegram.org/bot*BOTTOKEN*/*METHOD*?*ARGUMENT1*=*VALUE1*&*ARGUMENT2*=*VALUE2* 您将使用此布局与您需要/想要的参数一样多,本文档将向您展示基本方法以及怎样使用它们。

    SendMessage方法

    https://api.telegram.org/bot*BOTTOKEN*/sendmessage?chat_id=exampleID&text=exampleText&parse_mode=HTML

    这是做什么的?有了您的参数调整,这准确的通话将消息发送给 exampleID 用户与 exampleText 作为消息的HTML编码。尺度编码是markdown(拜见 源代码 ),但在某些环境下,您可以使用HTML。

    chat_id text parse_mode旁边, 您可以使用以下参数:

    • disable_web_page_preview - 用于在发送链接时禁用尺度预览
    • disable_notification - 用于禁用用户的通知(Android用户仍会收到通知,但没有声音)
    • reply_to_message_id - 将消息作为对另一条消息的回答发送(具有此ID)
    • reply_markup - 使用此参数发送自定义键盘

    发送简单消息只需要 chat_id text 参数,全部其他运算符都是可选的。 disable_web_page_preview disable_notification 方法需要一个布尔运算符(true或false)才能工作。全部参数都区分大小写,请留意!

    有关更多信息,请跳转到 bot api doku 的 sendMessage部分 。

    本文网址: http://www.1cm8858.com/d/202102610340_5154_3015579345/home