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 的反應,嚴格按照這個循環來寫,把函數和語法寫好,其實也不難的,對吧?
(我就一共寫了兩個小時而已~)