前面的章節,我們已經了解到了 QQBot 服務的搭建跟基礎的使用,現在,我們就要使用 QQBot 來實現我們的機器人。
首先,我們得先注冊我們的響應函數,這個函數的功能很簡單,只是監聽好友給我們發的信息,並給予回復,現在我們看看程序:
xiaoluo.py文件(這個文件的名字,沒有特別的要求,按照自己的喜歡,這個是我隨便取的名字,真正項目的時候,建議取名規范點):
1 # -*- coding: utf-8 -*- 2 3 # onQQMessage :必須的注冊函數的函數名稱 4 # bot :QQBot 對象,提供 List/SendTo/Stop/Restart 等接口 5 # contact :QContact 對象,消息的發送者,具有 ctype/qq/uin/nick/mark/card/name 等屬性 6 # member :QContact 對象,僅當本消息為 群消息或討論組消息 時有效,代表實際發消息的成員 7 # content :str 對象,消息內容 8 9 def onQQMessage(bot, contact, member, content): 10 if content == "-hello": 11 bot.SendTo(contact, "你好,我是小羅機器人") 12 elif content == '-stop': 13 bot.SendTo(contact, "小羅機器人已關閉") 14 bot.Stop()
contact:代表消息發送者,其 ctype 屬性可以為 buddy(好友)/ group(群組)/ discuss(討論組),表示是好友消息、群組消息、討論組消息。
member:僅當本消息為群消息或者討論組消息時有效,代表實際發消息的成員,它的 ctype 屬性可以為 group-member / discuss-member,代表群成員 / 討論組成員對象。如果本消息是好友消息時,則 member = None。
contact 和 member 都是 QContact 對象,不同類型的 QContact 對象所具有的 屬性含義見: qcontact-attr 。注意所有 QContact 對象都是 只讀對象 ,只 能讀取它的屬性,不能設置它的屬性,也不能向它添加額外的屬性。
可以調用 QQBot 對象的 SendTo 接口向 QContact 對象發送消息,但要注意: 只可以向 好友 / 群 / 討論組 發消息, 不可以向 群成員 / 討論組成員 發送消息 。也就是說,只可以調用 bot.SendTo(contact, 'xxx') , 不可以調用 bot.SendTo(member, 'xxx') 。
將上邊的文件放到 ~/.qqbot-tmp/plugins/ 目錄下(這是基於 Linux 服務器的,我的 Windows 的目錄是在 C:/Users/Administrator/.qqbot-tmp/plugins/,具體情況根據你的環境來看):
1 cd ~/.qqbot-tmp/plugins/
接下來我們就要注冊這個響應函數了(我這里的文件是:xiaoluo.py):
1 qq plug xiaoluo
這樣我們就已經成功的注冊了這個響應函數了,接下來我們用另外一個 QQ 號對這個 QQ 號發送 -hello 和 -stop 這兩條消息來測試下響應函數是否注冊成功。
如果出現以上界面,那么恭喜你,你的 QQ機器人 已經搭建成功了。接下來,就可以擴展你的機器人性能了。
注意:
1、響應函數的函數名稱必須是:onQQMessage,函數參數也必須和上面的一致;
2、要將注冊函數的 .py 文件放在一下 ~/.qqbot-tmp/plugins/ 目錄下,Windows 則一般是在 C:/用戶/Administrator/.qqbot-tmp/plugins/ 這個文件夾下邊,具體根據個人的情況而定。
參考資料:
git 項目地址:https://github.com/pandolia/qqbot/