telegram作为一个新兴的软件,其中有一个令人眼前一亮的功能:游戏机器人
如何创造一个游戏机器人?
游戏
在游戏部分,你需要有一个 HTML5 的网站,其中含有你的游戏,并可以用一个网址打开。这个游戏的“网址”就是后面我们会说到的“游戏url”,你此时需要确保可以打开它;
接下来,让我们打开 telegram,找到 @Botfather,创建一个新游戏。创建新游戏的最后一步,会设置一个game_shot_name,这个参数我们后面会用到。
机器人
首先我们要自己新建一个 bot(给 botfather“接生”),你会得到一个bot_token(注意这一个东西要保密),bot_token 是一串数字和字母,中间用冒号链接,比如“1234567:ABCabc”这种。
在机器人部分,就到了我们“喜闻乐见”的写程序时间。
首先(我们以 Python 为语言)我们需要一个库:一个专门属于 telegram Python 的库:
pip install pyTelegramBotAPI
等它下载和安装完成后,我们开始配置机器人的环境
机器人需要 token 才能创建并运行,我们所有有关机器人的操作都是在一个叫bot的类中运行的。
import telebot BOT_TOKEN = '123456:ABCabc'#载入你们的token bot = telebot.TeleBot(BOT_TOKEN)#用token创建你们的机器人
好!现在我们有一个傻傻的机器人了,你可以通过搜索他的名称以来跟他发信息,但是现在它连读写都还不会呢。
既然他不会,那么我们就来做它的小学老师;但是我们是一个比较邪恶的老师,我们只教我们想让它做的:
@bot.message_handler(commands=['hello','hi']) # 这是一个标签,也是一个过滤器,过滤掉所有无关的命令,只留下‘/hello’和‘/hi’ def hi(message): #定义一个函数 bot.reply_to(message, 'hi there!') # 让你的bot学会什么是礼貌!
这就是一个最最简单的可以给你答话的 bot,但是它必须要你的命令才敢说话,像极了小学时老师念一个词你跟一个词的场景
接下来让他自己学会说什么:
@bot.message_handler(func=lamdba, msg:True) #如果不是命令的话,你就自由吧! def hi(message): bot.reply_to(message, message.text) # 其实并不自由,让它跟着我们鹦鹉学舌 #让我们的bot自动跟你说话!
好!这就是我们全部的基本逻辑。
接下来,我们要开始向人们发送游戏了!
@bot.message_handler(commands=['start'])#通过命令控制 def send_game(message): userid = message.chat.id # 使用 bot 的人的 id:必不可少 game_short_name = 'my_game_short_name' # 填之前的那个你设置的游戏的 game_shot_name bot.send_game(userid, game_short_name) #发送游戏!
如果此时你打开了你的 bot 并发送'/start'时,应该就可以看到那个你辛辛苦苦做出来的画面哩!
此时你点击按钮时,你的bot就开始发呆了:谁知道你想做神马呢?让我们设置一下!
当你点击按钮时,会向你的机器人发送一个CallBackQuery,这个东西很长很长,包含了你游戏界面所有的信息
@bot.callback_query_handler(func=lambda callback: True) # 通过标签过滤掉其他命令,只剩下回来的callbackquery def check_callback(callback): # 创建一个函数 bot.answer_callback_query( callback.id, url='your_game_url') # url 里放你的游戏网址 # callback.id是这个函数所要使用的 callbackquery 的 id,不然怎么知道它是哪个?
试试看吧?
你肯定现在已经在疑惑了,为什么不行?答案很简单:你差了一步!开始让你的bot工作起来!
bot.infinity_polling() # 进入一个死循环不退出程序
我们的简短编程到此结束,其实就是完成了一个交互的回路:
从使用者的命令到 bot 的反应,严格按照这个循环来写,把函数和语法写好,其实也不难的,对吧?
(我就一共写了两个小时而已~)