博客
Blog

2020年04月03日

第十次公司内部学习会

本次学习会的主题是telegram bot的自己制作方法与短期考试学习法,这两个部分的学习会。
虽然在学习会上介绍学习方法稍微有点奇怪但是很有意思。

关于Telegram

telegram icon

在日本Telegram并非家喻户晓,但却是全世界都在使用的聊天工具。
用户可以和其他用户或者是聊天群进行聊天。
就和在日本用的Line是差不多的。

此处,将介绍如何创建一个可以通过Telegram上的聊天执行和响应任务的机器人。
与Line的Bot账户本质上是类似的东西。

开发环境
・node.js 12
・TypeScript 3.8
・Telegraf.js

使用Telegraf.js以请求的形式接收来自用户的消息,通过用消息记述处理,也可以根据用户的消息来分支处理。

首先,为了制作Bot,需要先登陆Telegram。(以下实际上是英语的意译)

创建Telegram账户,向BotFather(https://telegram.me/botfather)发送「/newbot」(意思是:爸爸,我要制作Bot)的信息吧。
这样就从爸爸那里得到「哦,你要做一个叫bot的机器人啊」,用英语写的就以Bot命名的回复。这时候就不需要「/」,直接就把名字输入进去吧。
给他命名的时候,又会被要求「不是挺好的吗,那就给bot加上用户的名字,最后一定要加上bot」,所以最后再加上bot来命名吧。
比方说,「ExampleBot」「Example_bot」之类的,bot名+”_bot”加上应该不会很困难吧。

以Bot命名好了之后,爸爸就会返回「Bot已经做好了,以后可以更改Bot用户的各种设置」其中包含了一长串的访问token的内容,先用笔记记下来。


此次没有使用云服务,而是在PC上用node.js启动Telegram。
从这里开始用JS 程序库对Telegraf.js的TelegramBot处理进行编程。

  1. // filename: hello-world.ts
  2. import Telegraf from 'telegraf'
  3. const bot = new Telegraf(process.env.BOT_TOKEN!) // 从环境变量中取得Token
  4. bot.start((ctx) => ctx.reply('Welcome')) // 初次打招呼 (固有命令 /start)
  5. bot.help((ctx) => ctx.reply('Send me a sticker')) // 固有命令 /help
  6. bot.on('sticker', (ctx) => ctx.reply('\u{1F44D}')) // Stamp返回后就用大拇指的emoji回复(为了避免wiki的不一致,换成了unicode)
  7. bot.hears('hi', (ctx) => ctx.reply('Hey there')) // 对话中的关键词匹配
  8.              // ^^ 这里 Regex 也 OK
  9. bot.launch() // 启动

首先,使用Telegraf.js取得Bot的初始变量并输入Bot。
操作Bot的时候,使用变量进行处理。

这次使用的bot使用的是「start()」「help()」「on()」「hears()」「launch()」的方法。
・start()是在初次会话时处理消息
・help()是bot帮助内容显示的处理
・on()是使用用户Stamp时的内容处理
・Hears()是如果用户发送的消息的第一个参数中包含字符串,则用此处理
・Launch()是bot启动的方法中最后必要进行的处理

上面的code可以执行自己的Bot的聊天页面,Bot就会如上述代码所述进行回答。

実際に動かしている様子

实际启动的样子

本公司的员工张同学以超短时间考试合格而在公司内很有名。
于是请张同学务必在公司内给分享一下短时间内考试合格的方法。

・首先要明确考试范围和考试时间。因为在考试中有合格线,一定要以明确的以这个合格线为目标进行学习。
・然后是过去真题的说明。考试每次都会有所不同,可以根据真题得出考试的出题倾向。

过去真题有:
① 留下与1-2次考试相当的量的问题,当作模拟试题。
② 不要将问题的细节和原委全部掌握,要理解整体脉络,并且记忆。
③ 标记做错的问题,并且定期复习。
④ 每次做完问题,计算正确率是不是满足合格标准,把握正确率的变化。

※上述都是以考试为目标的,请注意不要误会。

Page top