qqbot เป็นหุ่นยนต์ QQ ที่ใช้งานใน python และใช้โปรโตคอล SmartQQ ของ Tencent มันสามารถทำงานบนแพลตฟอร์ม Linux, Windows และ Mac OSX
ที่อยู่ GitHub ของโครงการนี้: https://github.com/pandolia/qqbot
คุณสามารถทำได้โดยขยาย qqbot:
สำหรับการใช้งานภายใต้ Python 2.7/3.4+ ให้ติดตั้งด้วย pip:
pip install qqbot
หรือดาวน์โหลดซอร์สโค้ด แตกไฟล์ ซีดีลงในไดเร็กทอรีแล้วรัน: pip install
ป้อน: qqbot บนบรรทัดคำสั่งเพื่อเริ่ม QQBot
ในระหว่างกระบวนการเริ่มต้น รูปภาพโค้ด QR จะปรากฏขึ้นโดยอัตโนมัติ คุณต้องใช้ไคลเอนต์ QQ มือถือเพื่อสแกนโค้ดและอนุญาตการเข้าสู่ระบบ หลังจากเริ่มต้นสำเร็จ ข้อมูลการเข้าสู่ระบบจะถูกบันทึกลงในไฟล์ในเครื่อง เมื่อเริ่มต้นในครั้งต่อไป คุณสามารถป้อน: qqbot -q qq number ขั้นแรกให้ลองกู้คืนข้อมูลการเข้าสู่ระบบจากไฟล์ในเครื่อง (ไม่จำเป็นต้องสแกนโค้ดด้วยตนเอง) . เฉพาะการกู้คืนเท่านั้นที่ล้มเหลว คุณจะต้องสแกนโค้ด QR ด้วยตนเองเพื่อเข้าสู่ระบบหากการเข้าสู่ระบบสำเร็จหรือข้อมูลการเข้าสู่ระบบหมดอายุ โดยทั่วไป ข้อมูลการเข้าสู่ระบบที่บันทึกไว้จะหมดอายุหลังจากผ่านไป 2 วัน
หมายเหตุ: สำหรับ Linux จำเป็นต้องมีคำสั่ง gvfs-open หรือ shotwell ในระบบเพื่อแสดงอิมเมจโค้ด QR โดยอัตโนมัติ (โดยทั่วไป ระบบที่ติดตั้ง gvfs ระบบไฟล์เสมือน GNOME จะมีคำสั่งใดคำสั่งหนึ่งจากสองคำสั่งนี้) ใน Windows 10 จะต้องตั้งค่าโปรแกรมเปิดเริ่มต้นสำหรับไฟล์ภาพ PNG ในระบบเพื่อให้แสดงภาพรหัส QR โดยอัตโนมัติ
หากระบบไม่สามารถแสดงรูปภาพโค้ด QR โดยอัตโนมัติได้ คุณสามารถเปิดไฟล์รูปภาพและสแกนโค้ดได้ด้วยตนเอง หรือคุณสามารถตั้งค่าโหมดการแสดงโค้ด QR เป็นโหมดเมลบ็อกซ์ โหมดเซิร์ฟเวอร์ หรือโหมดข้อความเพื่อสแกนโค้ดได้ สำหรับรายละเอียด ดูส่วนที่ 7 ของเอกสารนี้
หลังจากที่ QQBot เริ่มทำงานแล้ว ให้ใช้คำสั่ง qq ในหน้าต่างคอนโซลอื่นเพื่อใช้งาน QQBot
1) 帮助、停机和重启命令
qq help|stop|restart|fresh-restart
2) 联系人查询、搜索命令
qq list buddy|group|discuss [$cinfo|$clike]
( $cinfo --> $qq|$name|$key=$val )
( $clike --> :like:$qq|:like:$name|$key:like:$name )
qq list group-member|discuss-member $oinfo|$olike [$cinfo|$clike]
( $oinfo --> $oqq|$oname|$okey=$oval )
( $cinfo --> $qq|$name|$key=$val )
( $olike --> :like:$oqq|:like:$oname|$okey:like:$oname )
( $clike --> :like:$qq|:like:$name|$key:like:$name )
3) 联系人更新命令
qq update buddy|group|discuss
qq update group-member|discuss-member $ginfo
4) 消息发送命令
qq send buddy|group|discuss $rinfo $message
5) 加载/卸载/显示插件
qq plug/unplug myplugin
qq plugins
คำสั่ง list ให้การค้นหาผู้ติดต่อที่มีประสิทธิภาพและฟังก์ชันการค้นหามีดังนี้:
# 列出所有好友
qq list buddy
# 列出 名称 为 xxx 的群
qq list group xxx
# 列出备注名为 jack 的好友
qq list buddy mark=jack
# 列出 群“456班” 的所有成员
qq list group-member 456班
# 列出 群“456班” 中名片为 “mike” 的成员
qq list group-member 456班 card=mike
# 列出 讨论组“XX小组” 中名为 jack 的好友
qq list discuss-member XX小组 jack
หากพารามิเตอร์ที่สามและสี่อยู่ในรูปแบบ key=val ควรอยู่ในรูปแบบ name=xx|nick=xx|mark=xx|card=xx|qq=xx key=val กด หลักการประมวลผลจะเป็นดังนี้: ถ้าเป็นสตริงตัวเลข ให้สืบค้นด้วยหมายเลข QQ หรือจะสืบค้นตามชื่อ
หากมีชื่อซ้ำ รายชื่อติดต่อทั้งหมดที่มีชื่อซ้ำกันจะแสดงอยู่ในรายการ ชอบ:
qq list group 机器人测试
กลุ่มทั้งหมดที่ชื่อ "การทดสอบบอท" จะถูกแสดงรายการ
หากเพิ่ม ":like:" ให้กับพารามิเตอร์ที่สามและสี่ของคำสั่ง list การค้นหาจะขึ้นอยู่กับรูปแบบการจับคู่บางส่วนดังต่อไปนี้:
# 列出名称中含有 “李” 的好友
qq list buddy :like:李
# 列出 QQ 中含有 “234” 的群
qq list group :like:234
# 列出备注名中含有 jack 的好友
qq list buddy mark:like:jack
# 列出 群“456班” 的中名称中含有 “李” 的成员
qq list group-member 456班 :like:李
# 列出 群“456班” 中名片中含有 “mike” 的成员
qq list group-member 456班 card:like:mike
# 列出的 讨论组“xx小组” 中名为 jack 的好友
qq list discuss-member :like:小组 jack
เริ่มต้นจากเวอร์ชัน v2.2.5 คำสั่ง list จะใช้ตารางเพื่อส่งออกรายชื่อผู้ติดต่อ ตัวอย่างของรูปแบบเอาต์พุตมีดังนี้:
เพื่อให้แน่ใจถึงเอฟเฟกต์การแสดงผลของตารางในเทอร์มินัล ขอแนะนำให้ตั้งค่าแบบอักษรเอาท์พุตของเทอร์มินัลเป็นคอนโซล และจำนวนอักขระสูงสุดที่สามารถพิมพ์ในแต่ละบรรทัดมากกว่า 120 หมายเหตุเพิ่มเติม: เพื่อให้แน่ใจว่าเอฟเฟกต์การแสดงผลของตาราง เมื่อชื่อผู้ติดต่อ นามบัตร และคุณลักษณะอื่นๆ ยาวเกินไปหรือมีอักขระพิเศษ คุณลักษณะเหล่านี้จะถูกตัดทอนหรือกรองก่อนที่จะส่งออกไปยังเทอร์มินัล
คำสั่ง update จะอัพเดตรายชื่อผู้ติดต่อที่ระบุ และความหมายของพารามิเตอร์จะเหมือนกับความหมายของคำสั่ง list เช่น:
# 更新好友列表
qq update buddy
# 更新群列表
qq update group
# 更新 群“456班” 的成员列表
qq update group-member 456班
พารามิเตอร์ตัวที่สามในคำสั่ง send มีรูปแบบเดียวกันกับพารามิเตอร์ตัวที่สามในคำสั่ง list โปรดทราบว่าหากมีชื่อซ้ำกัน ข้อความจะถูกส่งไปยังผู้ติดต่อทั้งหมดที่มีชื่อเดียวกัน โปรดทราบว่าพารามิเตอร์ที่สองสามารถเป็นได้เฉพาะ Buddy/group/discuss ไม่ใช่ group-member/discuss-member ตัวอย่าง:
# 给 好友“jack” 发消息 “你好”
qq send buddy jack 你好
# 给 群“198班” 发消息 “大家好”
qq send group 198班 大家好
# 给 QQ 为 12345 的好友发消息
qq send buddy 12345 xxx
# 给讨论组发消息
qq send discuss MyDiscuss hello
คุณสามารถฝังคีย์เวิร์ดอิโมติคอน เช่น "/cute" ในเนื้อหาข้อความเพื่อส่งอิโมติคอนไปยังอีกฝ่ายได้ ดูรายละเอียดใน facemap.py คุณยังสามารถใช้อักขระหลีกสองตัว n และ t ในเนื้อหาข้อความได้ (เช่น ส่งบัดดี้แจ็ค บรรทัดแรกn บรรทัดที่สอง)
คำสั่งข้างต้นทั้งหมดมีอินเทอร์เฟซ HTTP API ที่สอดคล้องกันสำหรับนักพัฒนาเว็บส่วนหน้าในการเรียก ที่อยู่ URL ของอินเทอร์เฟซคือ http://127.0.0.1:8188/{command} คุณจะต้องใช้ "/" สำหรับแต่ละพารามิเตอร์เท่านั้น ของคำสั่งหลัง qq เพียงแยกและแทนที่คำสั่งใน url เช่น: http://127.0.0.1:8188/send/buddy/jack/hello โปรดดู urltestbot.md สำหรับตัวอย่างอื่นๆ หมายเหตุ: หากคำสั่งมีอักขระภาษาจีนหรือพิเศษ จะต้องดำเนินการเข้ารหัส URL (utf8) ก่อน เช่น โทร http://127.0.0.1:8188/send/buddy/jack/nihao%20%E4%BD% A0%E5 %A5%BD%20wohao จะส่งข้อความ "nihao สวัสดี wohao" (เคล็ดลับ: ใน JavaScript คุณสามารถใช้ฟังก์ชัน encodeURIComponent สำหรับการเข้ารหัสได้)
นอกจากนี้ หลังจากที่ QQBot เริ่มต้นแล้ว หากคุณใช้บัญชี QQ นี้เพื่อส่งข้อความ "--version" ไปยังกลุ่ม/กลุ่มสนทนาบนไคลเอนต์อื่น (เช่น QQ มือถือ) QQBot จะตอบกลับไปยังกลุ่ม/กลุ่มสนทนาโดยอัตโนมัติ: "QQBot -v2.xx"
มันง่ายมากที่จะใช้งานหุ่นยนต์ QQ ของคุณเอง คุณเพียงแค่ต้องกำหนดฟังก์ชันตอบกลับข้อความของคุณเองและโหลดเป็นปลั๊กอิน รหัสตัวอย่าง:
# -*- coding: utf-8 -*-
def onQQMessage ( bot , contact , member , content ):
if content == '-hello' :
bot . SendTo ( contact , '你好,我是QQ机器人' )
elif content == '-stop' :
bot . SendTo ( contact , 'QQ机器人已关闭' )
bot . Stop ()
โปรดทราบว่าชื่อฟังก์ชันของฟังก์ชันตอบสนองที่ลงทะเบียนด้านบนต้องเป็น "onQQMessage" และพารามิเตอร์ฟังก์ชันจะต้องสอดคล้องกับข้างต้นด้วย
บันทึกโค้ดด้านบนเป็น example.py (โปรดทราบว่าโค้ดดังกล่าวจะถูกบันทึกเป็นไฟล์ที่เข้ารหัส utf8) วางไว้ในไดเร็กทอรี ~/.qqbot-tmp/plugins/ ( ~ หมายถึงไดเร็กทอรีโฮมของผู้ใช้, C:Usersxxx ภายใต้ win7) หรือไดเร็กทอรีที่สามารถนำเข้าในระบบ (เช่น Lib/ ใน python ไดเร็กทอรีการติดตั้ง) ไดเร็กทอรีไซต์แพ็คเกจ)
หลังจากนั้น ให้ดำเนินการกระบวนการ qqbot ก่อนหน้านี้ต่อไป และป้อนตัวอย่างปลั๊ก qq ในคอนโซลอื่น จากนั้นฟังก์ชัน onQQMessage ในไฟล์นี้สามารถลงทะเบียนกับเหตุการณ์ที่เกี่ยวข้องของ QQBot ได้ ในเวลานี้ หากคุณใช้ QQ อื่นเพื่อส่งข้อความ "-hello" ไปยัง QQ นี้ มันจะตอบกลับโดยอัตโนมัติ ว่า "Hello, I am a QQ robot" หากคุณส่งข้อความ "-stop" หุ่นยนต์ QQ จะทำงาน ปิด.
ป้อนตัวอย่าง qq unplug บนคอนโซลเพื่อถอนการติดตั้งปลั๊กอินนี้และฟังก์ชันการติดต่อกลับที่เกี่ยวข้อง สามารถโหลดปลั๊กอินได้หลายตัวพร้อมกัน และฟังก์ชันที่เกี่ยวข้องในแต่ละปลั๊กอินจะถูกเรียกตามลำดับ (แต่ลำดับการเรียกไม่เกี่ยวข้องกับลำดับการโหลด)
หลังจากที่ QQBot เริ่มทำงาน แต่ละครั้งที่ได้รับข้อความ QQ จะส่งแหล่งข้อความ เนื้อหาข้อความ และออบเจ็กต์ QQBot ไปยังฟังก์ชันตอบกลับข้อความที่ลงทะเบียนไว้ ใน:
bot : QQBot 对象,提供 List/SendTo/Stop/Restart 等接口,详见本文档第五节
contact : QContact 对象,消息的发送者,具有 ctype/qq/uin/nick/mark/card/name 等属性
member : QContact 对象,仅当本消息为 群消息或讨论组消息 时有效,代表实际发消息的成员
content : str 对象,消息内容
contact แสดงถึงผู้ส่งข้อความ และแอตทริบิวต์ ctype สามารถเป็น buddy
/ group
/ discuss
ซึ่งแสดงถึงอ็อบเจ็กต์เพื่อน/กลุ่ม/กลุ่มสนทนา โดยระบุว่าข้อความนี้เป็นข้อความเพื่อน/ข้อความกลุ่ม/ข้อความกลุ่มสนทนา
member ใช้ได้เฉพาะเมื่อข้อความนี้เป็นข้อความกลุ่มหรือข้อความกลุ่มสนทนา และแสดงถึงสมาชิกที่ส่งข้อความจริงๆ แอตทริบิวต์ ctype สามารถเป็น group-member
/ discuss-member
ซึ่งแสดงถึงสมาชิกกลุ่ม/อ็อบเจ็กต์สมาชิกกลุ่มสนทนา เมื่อข้อความนี้เป็นข้อความเพื่อน สมาชิกจะมีค่าเท่ากับไม่มี
ทั้งผู้ติดต่อและสมาชิกเป็นวัตถุ QContact สำหรับความหมายของคุณลักษณะของวัตถุ QContact ประเภทต่างๆ โปรดดู: qcontact-attr โปรดทราบว่าออบเจ็กต์ QContact ทั้งหมดเป็น ออบเจ็กต์แบบอ่านอย่างเดียว เท่านั้นที่สามารถอ่านได้ คุณสมบัติไม่สามารถตั้งค่าได้ และไม่สามารถเพิ่มคุณสมบัติเพิ่มเติมได้
คุณสามารถเรียกอินเทอร์เฟซ SendTo ของออบเจ็กต์ QQBot เพื่อส่งข้อความไปยังออบเจ็กต์ QContact ได้ แต่โปรดทราบ: คุณสามารถ ส่งข้อความถึงเพื่อน/กลุ่ม/กลุ่มสนทนาเท่านั้น แต่ไม่สามารถส่งข้อความถึงสมาชิกกลุ่ม/สมาชิกกลุ่มสนทนาได้ กล่าวอีกนัยหนึ่ง สามารถเรียกได้เฉพาะ bot.SendTo(contact, 'xxx') แต่ไม่สามารถเรียก bot.SendTo(member, 'xxx') ได้
อ็อบเจ็กต์ QQBot จัดเตรียมรายการ/อัปเดต/SendTo/Plug/Unplug/Login/Stop/Restart/FreshRestart ทั้งหมด 9 รายการ อักษรตัวแรกของอินเทอร์เฟซเหล่านี้จะเป็นตัวพิมพ์ใหญ่ทั้งหมด นอกจากนี้ ยังมีการกำหนดคุณลักษณะสาธารณะเพื่อบันทึกข้อมูลการกำหนดค่าส่วนกลาง
โดยทั่วไป ห้ามเรียก/เข้าถึงวิธีการ/คุณสมบัติอื่นๆ ของวัตถุนี้ โดยเฉพาะอย่างยิ่ง อย่าเรียกอินเทอร์เฟซเหล่านี้ในเธรดย่อย ต่อไปนี้จะอธิบายเจ็ดอินเทอร์เฟซและคุณลักษณะ conf แรก
หากคุณต้องการรันหรือทดสอบอินเทอร์เฟซด้านบนใน IDE หรือ python-shell คุณต้องปิดกระบวนการ qqbot ก่อน และรันโค้ดต่อไปนี้ใน IDE หรือ python-shell เพื่อเข้าสู่ระบบ:
>>> from qqbot import _bot as bot
>>> bot.Login(['-q', '1234'])
สอดคล้องกับคำสั่งรายการในส่วนที่ 3 ของเอกสารนี้ ส่งคืนรายการวัตถุผู้ติดต่อ (วัตถุ QContact) หรือไม่มี พารามิเตอร์แรก tinfo คือชื่อรหัสของรายชื่อผู้ติดต่อ และพารามิเตอร์ตัวที่สองเป็นทางเลือก (รูปแบบจะเหมือนกับพารามิเตอร์ตัวที่สามของคำสั่ง list)
พารามิเตอร์ tinfo ใช้เพื่อแสดงรายการผู้ติดต่อ พารามิเตอร์นี้มีความสำคัญมากในการค้นหาผู้ติดต่อ โปรดทำความเข้าใจสองสถานการณ์ต่อไปนี้ :
ความหมายของ tinfo (กรณีที่ 1): tinfo สามารถเป็น buddy
/ group
/ discuss
ซึ่งแสดงถึงรายชื่อเพื่อน/รายชื่อกลุ่ม/รายชื่อกลุ่มสนทนาตามลำดับ ตัวอย่าง:
# 返回 好友列表:
>>> bot.List('buddy')
# 返回名为 'jack' 的好友的列表:
>>> bot.List('buddy', 'jack')
# 返回 群列表:
>>> bot.List('group')
# 返回名为 “机器人测试” 的群的列表:
>>> bot.List('group', '机器人测试')
ความหมายของ tinfo (กรณีที่ 2): tinfo ยังสามารถเป็นวัตถุ QContact ที่มี ctype เท่ากับ group
/ discuss
ซึ่งเป็นตัวแทนของรายชื่อสมาชิกของกลุ่ม/กลุ่มสนทนา ตัวอย่างเช่น ประโยคที่สองและสามด้านล่างจะแสดงรายชื่อสมาชิกของกลุ่ม "Class 456" และรายชื่อสมาชิกที่มีนามบัตรเป็น "jack" ในกลุ่มตามลำดับ:
>>> g = bot.List('group', "456班")[0] # g 是一个 Group 对象(群“456班”)
>>> bot.List(g) # 返回 群“456班” 的成员列表
>>> bot.List(g, 'card=jack') # 返回 群“456班” 中名片为 “jack” 的成员列表
โปรดทราบว่าประโยคที่สามด้านบนไม่อนุญาตให้มีรูปแบบของ bot.List(g, card='jack')
ลำดับการดำเนินการภายในของอินเทอร์เฟซรายการ: ขั้นแรกให้ค้นหารายชื่อผู้ติดต่อที่แสดงโดย tinfo ในฐานข้อมูลผู้ติดต่อของ QQBot หากมีรายการอยู่แล้วในฐานข้อมูล ให้ค้นหาภายในรายการนี้และส่งคืนรายการที่มีรายการ "ทั้งหมดและ" รายชื่อติดต่อที่ตรงกัน cinfo ; หากไม่มีรายการดังกล่าวในฐานข้อมูล ให้ขอข้อมูลจากเซิร์ฟเวอร์ QQ เพื่อรับรายชื่อผู้ติดต่อ หลังจากดำเนินการสำเร็จ รายชื่อผู้ติดต่อจะถูกบันทึกลงในฐานข้อมูล จากนั้นค้นหาและส่งคืนรายการที่มี "รายการนี้" ทั้งหมด ใน cinfo รายการ "การจับคู่ผู้ติดต่อ" หากเกิดข้อผิดพลาดระหว่างการร้องขอข้อมูลจากเซิร์ฟเวอร์ QQ ข้อมูลความล้มเหลวที่เกี่ยวข้องจะถูกพิมพ์และจะไม่มีการส่งกลับ
ความหมายของค่าที่ส่งคืนของอินเทอร์เฟซรายการ: ส่งคืนรายการที่ไม่ว่างเพื่อแสดงถึงผู้ติดต่อทั้งหมดที่ตรงกับ cinfo ในรายชื่อผู้ติดต่อที่ระบุโดย tinfo ส่งคืนรายการว่างเพื่อแสดงว่าไม่มีผู้ติดต่อที่ตรงกับ cinfo ในรายชื่อผู้ติดต่อ ไม่มีเพื่อแสดงการขอรายชื่อผู้ติดต่อและข้อมูลจากเซิร์ฟเวอร์ QQ ล้มเหลว ฉันไม่รู้ว่ามีผู้ติดต่อที่ตรงกันหรือไม่
หลังจากเรียกอินเทอร์เฟซรายการแล้ว อย่าลืม ตัดสินค่าที่ส่งคืนตามสามสถานการณ์ข้างต้น ก่อนที่จะรันโค้ดที่ตามมา
หมายเหตุ: เมื่ออินเทอร์เฟซรายการส่งคืนรายการที่ไม่ว่าง องค์ประกอบในรายการจะเป็นอ็อบเจ็กต์ QContact ไม่ใช่อ็อบเจ็กต์ str:
>>> g = bot.List('group')[0] # g 是一个 Group 对象
>>> print([g, type(g), g.qq, g.name, g.uin, g.mark]) # 打印 g 的各项属性
สำหรับความหมายของคุณลักษณะของออบเจ็กต์ QContact ประเภทต่างๆ โปรดดู: qcontact-attr
พารามิเตอร์ tinfo ของอินเทอร์เฟซการอัปเดตมีความหมายเหมือนกับพารามิเตอร์ในอินเทอร์เฟซรายการ การเรียกอินเทอร์เฟซนี้จะขอรายชื่อผู้ติดต่อที่เกี่ยวข้องจากเซิร์ฟเวอร์ QQ ทันทีและอัปเดตฐานข้อมูลผู้ติดต่อ และจะบล็อกจนกว่าการอัปเดตจะสำเร็จ การอัปเดตที่ช้าที่สุดคือรายชื่อเพื่อน หากมีเพื่อนจำนวนมาก อาจถูกบล็อกเป็นเวลา 5 ~ 10 วินาที รายชื่อสมาชิกอัพเดทเร็วมาก แม้แต่กลุ่มใหญ่ 2,000 คนก็ใช้เวลาอัพเดทเพียง 1 ถึง 2 วินาทีเท่านั้น
หากการอัปเดตสำเร็จ True จะถูกส่งกลับ มิฉะนั้นจะส่งกลับ False
ตัวอย่าง:
# 更新 好友列表 :
>>> bot.Update('buddy')
# 更新 群列表 :
>>> bot.Update('group')
# 更新 某个群的成员列表 :
>>> gl = bot.List('group', "456班")
>>> if gl:
>>> g = gl[0]
>>> bot.Update(g)
ส่งข้อความถึงผู้ติดต่อ พารามิเตอร์แรกคือออบเจ็กต์ QContact และพารามิเตอร์ตัวที่สองคือเนื้อหาข้อความ คำเตือนอีกครั้ง: คุณสามารถส่งข้อความถึงเพื่อน/กลุ่ม/กลุ่มสนทนาเท่านั้น คุณไม่ได้รับอนุญาตให้ส่งข้อความถึงสมาชิกกลุ่ม/สมาชิกกลุ่มสนทนา
คุณสามารถฝังคำหลักของอิโมติคอน เช่น "/smile" ในเนื้อหาข้อความเพื่อส่งอิโมติคอนไปยังอีกฝ่ายได้ สำหรับรายละเอียด โปรดดูที่ facemap.py
หากการส่งสำเร็จ สตริงจะถูกส่งกลับ (向xx 发消息成功
) มิฉะนั้น ระบบจะส่งคืนสตริงที่มีสาเหตุของข้อผิดพลาด (错误:...
)
เมื่อส่งข้อความ ข้อความอาจถูกส่งซ้ำๆ เนื่องจากเซิร์ฟเวอร์ QQ ส่งคืนรหัส 1202 เวอร์ชัน v2.1.17 ได้เพิ่มพารามิเตอร์ให้กับอินเทอร์เฟซ bot.SendTo สำหรับปัญหานี้: resendOn1202 หากพารามิเตอร์นี้เป็น True (ค่าเริ่มต้น) หากเซิร์ฟเวอร์ QQ ส่งคืนรหัส 1202 (ระบุว่าข้อความอาจล้มเหลว) เมื่อส่งข้อความ มันจะถูกส่งต่อไป 3 ครั้งจนกว่าโค้ดส่งคืนจะเป็น 0 หากพารามิเตอร์นี้เป็น False จะไม่มีความพยายามส่งซ้ำ
การตั้งค่าเป็น True ช่วยให้มั่นใจได้ว่าข้อความจะถูกส่งในกรณีส่วนใหญ่ แต่ข้อเสียคือบางครั้งข้อความจะถูกส่งซ้ำๆ หากตั้งค่าเป็น False ในทางกลับกัน ข้อความจะไม่ถูกส่งซ้ำๆ แต่บางครั้งไม่สามารถส่งข้อความได้
กล่าวโดยย่อ เนื่องจากความไม่แน่นอนของรหัส 1202 นี้ จึงไม่มีวิธีแก้ปัญหาที่สมบูรณ์แบบ โปรดเลือกค่าของ resendOn1202 ตามสถานการณ์จริงของคุณ
ผู้ติดต่อพารามิเตอร์แรกต้องเป็นออบเจ็กต์ QContact ที่ส่งคืนโดย bot.List หรือพารามิเตอร์แรกที่ส่งผ่านโดยฟังก์ชันเรียกกลับ onQQMessage ตัวอย่าง:
# 向 昵称 为 jack 的好友发消息
>>> bl = bot.List('buddy', 'jack')
>>> if bl:
>>> b = bl[0]
>>> bot.SendTo(b, 'hello')
ข้อมูลการกำหนดค่าส่วนกลางจะถูกบันทึกไว้ใน bot.conf สำหรับรายละเอียดเกี่ยวกับการกำหนดค่าแต่ละรายการ โปรดดูส่วนที่ 7 ของเอกสารนี้ ตัวอย่างเช่น bot.conf.termServerPort จะบันทึกหมายเลขพอร์ตของเซิร์ฟเวอร์บรรทัดคำสั่ง QQBot และ bot.conf.qq จะบันทึกหมายเลข QQ ของการเข้าสู่ระบบนี้
หมายเหตุ: ข้อมูลการกำหนดค่าที่บันทึกไว้ใน bot.conf เป็นแบบอ่านอย่างเดียว โปรดอย่าแก้ไขข้อมูลการกำหนดค่านี้
นอกเหนือจากฟังก์ชันการตอบสนอง onQQMessage ที่กล่าวถึงข้างต้น คุณยังสามารถลงทะเบียนฟังก์ชันการโทรกลับสำหรับเหตุการณ์ทั้งหมดเก้าเหตุการณ์ onInit/onQrcode/onStartupComplete/onInterval/onUpdate/onPlug/onUnplug/onExit โปรดดู Samplelots สำหรับรูปแบบพารามิเตอร์ฟังก์ชันการโทรกลับ ความหมาย และ ตัวอย่างเหตุการณ์ทั้งหมด py
กระบวนการทำงานของโปรแกรมและระยะเวลาการโทรของแต่ละฟังก์ชั่นการโทรกลับมีดังนี้:
คำเตือนอีกครั้ง: ต้องไม่เปลี่ยนชื่อฟังก์ชันของฟังก์ชันโทรกลับที่ลงทะเบียนไว้และพารามิเตอร์ฟังก์ชัน (หมายเลขและชื่อ)
เมื่อ QQBot ได้รับข้อความกลุ่ม ก่อนอื่นจะพิจารณาว่ามีใคร @ ตัวเองตามเนื้อหาข้อความหรือไม่ หากเป็นเช่นนั้น ให้เพิ่มเครื่องหมาย [@ME]
ที่จุดเริ่มต้นของเนื้อหาข้อความแล้วส่งต่อไปยังฟังก์ชัน onQQMessage หรือแทนที่ @ME
ทั้งหมดในเนื้อหาข้อความด้วย @Me
แล้วส่งต่อไปยัง onQQMessage ดังนั้นในฟังก์ชัน onQQMessage คุณเพียงแค่ต้องตรวจสอบว่าเนื้อหามี @ME
หรือไม่ เพื่อทราบว่าคุณเป็น @ โดยผู้ส่งข้อความหรือไม่ ตัวอย่างเช่น:
def onQQMessage ( bot , contact , member , content ):
if '@ME' in content :
bot . SendTo ( contact , member . name + ',艾特我干嘛呢?' )
โปรดทราบว่าหากมีสมาชิกคนอื่นในกลุ่มชื่อเดียวกับชื่อขึ้นต้นของคุณเอง (เช่น ชื่อของคุณคือ ab และสมาชิกอีกคนคือ abc) เมื่อมีคน @abc จะถูกรายงานเท็จ ในฐานะ @ME ในกรณีนี้ คุณต้องแก้ไขนามบัตรกลุ่มของคุณเพื่อหลีกเลี่ยงผลบวกลวง
เมื่อ QQ นี้ส่งข้อความ QQBot จะได้รับข้อความเดียวกันด้วย บอทออบเจ็กต์จัดเตรียมเมธอด isMe เพื่อตรวจสอบว่าข้อความถูกส่งด้วยตัวเองหรือไม่:
def onQQMessage ( bot , contact , member , content ):
if bot . isMe ( contact , member ):
print ( 'This is me' )
เริ่มตั้งแต่ 2.1.13 เป็นต้นไป qqbot มอบเครื่องมือตกแต่งฟังก์ชันอันทรงพลัง - qqbotsched
เพื่อปรับแต่งงานที่กำหนดเวลาไว้ โค้ดตัวอย่าง:
from qqbot import qqbotsched
@ qqbotsched ( hour = '11,17' , minute = '55' )
def mytask ( bot ):
gl = bot . List ( 'group' , '456班' )
if gl is not None :
for group in gl :
bot . SendTo ( group , '同志们:开饭啦啦啦啦啦啦!!!' )
หลังจากโหลดโค้ดด้านบนในรูปแบบปลั๊กอินแล้ว ข้อความจะถูกส่งไปยังกลุ่ม "คลาส 456" โดยอัตโนมัติทุก ๆ 11:55 น. และ 17:55 น.: "สหาย: เสิร์ฟอาหารค่ำ!!!"
เครื่องมือตกแต่ง qqbotsched ยอมรับพารามิเตอร์คีย์เวิร์ดทั้งหมด 11 รายการ: ปี, เดือน, วัน, สัปดาห์, day_of_week, ชั่วโมง, นาที, วินาที, start_date, end_date, เขตเวลา แต่ละพารามิเตอร์แสดงถึงค่าที่องค์ประกอบเวลาที่กำหนดเองของงานควรตรงกัน ตัวอย่างเช่น: hour='11,17' หมายความว่างานควรดำเนินการที่ 11:xx หรือ 17:xx นาที='55' หมายความว่างานควรดำเนินการที่ xx:55 นาที='0-55/5' หมายถึงงานควรจะดำเนินการที่ xx: 00, xx:05, xx:10, ..., xx:55 ดำเนินการงาน day_of_week='mon-fri' (หรือ '0-4') บ่งชี้ว่างานควร จะดำเนินการตั้งแต่วันจันทร์ถึงวันศุกร์
qqbotsched เป็นการห่อหุ้มอย่างง่ายของ apscheduler เฟรมเวิร์กงานที่กำหนดเวลาไว้ของ Python และพารามิเตอร์ควรป้อนในรูปแบบ crontab ในระบบ Unix สำหรับข้อมูลเกี่ยวกับ crontab และ apscheduler กรอบงานที่กำหนดเวลาไว้ของ Python โปรดดูเอกสารอ้างอิงต่อไปนี้:
สำหรับรายละเอียดเกี่ยวกับรูปแบบของพารามิเตอร์ crontab แต่ละตัว โปรดดู:
การลงทะเบียนฟังก์ชั่นการโทรกลับและการปรับแต่งงานตามกำหนดเวลาเป็นวิธีเดียวที่จะขยาย QQBot เมื่อเขียนฟังก์ชั่นเหล่านี้ โปรดใส่ใจกับสิ่งต่อไปนี้:
เมื่อเข้าสู่ระบบ WebQQ คุณต้องใช้ QQ โทรศัพท์มือถือของคุณเพื่อสแกนภาพรหัส QR ใน QQBot ภาพรหัส QR สามารถแสดงได้ในสี่โหมดต่อไปนี้:
โหมด GUI เป็นโหมดเริ่มต้นและใช้ได้เฉพาะบนพีซีเท่านั้น โหมดกล่องจดหมายสามารถใช้ได้บนคอมพิวเตอร์ส่วนบุคคลและเซิร์ฟเวอร์ระยะไกล โดยทั่วไปโหมดเซิร์ฟเวอร์จะใช้เฉพาะในระบบที่มีที่อยู่ IP สาธารณะเท่านั้น หากคุณใช้กล่องจดหมาย QQ เพื่อรับรหัส QR หลังจากส่งรูปภาพรหัส QR แล้ว ไคลเอนต์ QQ มือถือจะได้รับการแจ้งเตือนทันที เปิดอีเมลบนไคลเอนต์ QQ มือถือ จากนั้นกดรหัส QR ค้างไว้เพื่อสแกน โหมดข้อความสะดวกสำหรับการใช้งานในระหว่างกระบวนการพัฒนาหรือการปรับใช้เซิร์ฟเวอร์ และช่วยให้นักพัฒนามีทางลัดในการเข้าสู่ระบบ QQ
หมายเหตุ: เมื่อเปิดโหมดเมลบ็อกซ์/โหมดเซิร์ฟเวอร์/โหมดข้อความ โหมด GUI จะถูกปิด และรูปภาพโค้ด QR จะไม่ปรากฏขึ้นโดยอัตโนมัติเมื่อเข้าสู่ระบบ
ตัวจัดการโค้ด QR (ออบเจ็กต์ QrcodeManager) จะถูกสร้างขึ้นทุกครั้งที่คุณเข้าสู่ระบบ ตัวจัดการโค้ด QR จะเลือกวิธีการแสดงรูปภาพโค้ด QR ตามไฟล์การกำหนดค่าและพารามิเตอร์บรรทัดคำสั่ง
ไฟล์การกำหนดค่าคือ ~/.qqbot-tmp/v2.x.conf ( ~ แสดงถึงโฮมไดเร็กตอรี่ของผู้ใช้ ซึ่งก็คือ C:Usersxxx ภายใต้ win7 และ /home/xxx ภายใต้ linux) ไฟล์จะถูกกำหนดค่าโดยอัตโนมัติหลังจากรัน QQBot เป็นครั้งแรก สร้างไฟล์การกำหนดค่านี้โดยมีเนื้อหาดังต่อไปนี้:
{
# QQBot 的配置文件
# 使用 qqbot -u somebody 启动程序时,依次加载:
# 根配置 -> 默认配置 -> 用户 somebody 的配置 -> 命令行参数配置
# 使用 qqbot 启动程序时,依次加载:
# 根配置 -> 默认配置 -> 命令行参数配置
# 用户 somebody 的配置
"somebody" : {
# QQBot-term (HTTP-API) 服务器端口号(该服务器监听 IP 为 127.0.0.1 )
# 设置为 0 则不会开启本服务器(此时 qq 命令和 HTTP-API 接口都无法使用)。
"termServerPort" : 8188,
# 二维码 http 服务器 ip,请设置为公网 ip 或空字符串
"httpServerIP" : "",
# 二维码 http 服务器端口号
"httpServerPort" : 8189,
# 自动登录的 QQ 号
"qq" : "3497303033",
# 接收二维码图片的邮箱账号
"mailAccount" : "[email protected]",
# 该邮箱的 IMAP/SMTP 服务授权码
"mailAuthCode" : "feregfgftrasdsew",
# 是否以文本模式显示二维码
"cmdQrcode" : False,
# 显示/关闭调试信息
"debug" : False,
# QQBot 掉线后自动重启
"restartOnOffline" : False,
# 在后台运行 qqbot ( daemon 模式)
"daemon": False,
# 完成全部联系人列表获取之后才启动 QQBot
"startAfterFetch" : False,
# 插件目录
"pluginPath" : ".",
# 启动时需加载的插件
"plugins" : [],
# 插件的配置(由用户自定义)
"pluginsConf" : {},
},
# 可以在 默认配置 中配置所有用户都通用的设置
"默认配置" : {
"qq" : "",
"pluginPath" : "",
"plugins" : [
'qqbot.plugins.sampleslots',
'qqbot.plugins.schedrestart',
],
"pluginsConf" : {
'qqbot.plugins.schedrestart': '8:00',
}
},
# # 注意:根配置是固定的,用户无法修改(在本文件中修改根配置不会生效)
# "根配置" : {
# "termServerPort" : 8188,
# "httpServerIP" : "",
# "httpServerPort" : 8189,
# "qq" : "",
# "mailAccount" : "",
# "mailAuthCode" : "",
# "cmdQrcode" : False,
# "debug" : False,
# "restartOnOffline" : False,
# "daemon" : False,
# "startAfterFetch" : False,
# "pluginPath" : "",
# "plugins" : [],
# "pluginsConf" : {}
# },
}
คุณสามารถเพิ่มการกำหนดค่าผู้ใช้ของคุณเองในไฟล์การกำหนดค่า (นั่นคือ เพิ่มรายการใหม่ในพจนานุกรมของไฟล์ และคีย์ของรายการนี้แสดงถึงผู้ใช้) ตัวอย่างเช่น รายการบางคนในไฟล์แสดงถึงผู้ใช้ ตั้งชื่อใครสักคน เมื่อรัน QQBot ให้ป้อน qqbot -u someone และการกำหนดค่าภายใต้โปรเจ็กต์ someone จะถูกโหลด
ข้อมูลต่อไปนี้จะอธิบายการทำงานของแต่ละการกำหนดค่าในไฟล์การกำหนดค่า เนื้อหาต่อไปนี้จะถือว่าการกำหนดค่าภายใต้บุคคลอื่นได้รับการแก้ไขและทำงานในโหมด qqbot -u someone
หากคุณต้องการใช้โหมดเมลบ็อกซ์เพื่อแสดงรหัส QR คุณสามารถตั้งค่ารายการ mailAccount และ mailAuthCode เป็นบัญชีเมลบ็อกซ์และรหัสอนุญาตตามลำดับ หลังจากรันแล้ว ตัวจัดการรหัส QR จะส่งรูปภาพรหัส QR ไปยังเมลบ็อกซ์
หมายเหตุ: รหัสการอนุญาตไม่ใช่รหัสผ่านเข้าสู่ระบบของเมลบ็อกซ์ แต่เป็นรหัสการอนุญาตที่ผู้ให้บริการเมลบ็อกซ์ให้มาเพื่อเปิดใช้งานบริการ IMAP/SMTP (คำเตือน: ไม่ใช่บริการ POP3/SMTP ) สามารถเปิดใช้งานได้ใน การตั้งค่ากล่องจดหมายของบริการเวอร์ชันเว็บและรับรหัสอนุญาต หากกำหนดเฉพาะ mailAccount แต่ไม่ใช่ mailAuthCode จะต้องป้อนรหัสการอนุญาตด้วยตนเองเมื่อโปรแกรมเริ่มทำงาน
โหมดกล่องจดหมายได้รับการทดสอบในกล่องจดหมาย QQ, NetEase และ Google
หากคุณต้องการใช้โหมดเซิร์ฟเวอร์ คุณสามารถกำหนดค่ารายการ httpServerIP และ httpServerPort โดยทั่วไปแล้ว ควรตั้งค่าเป็น IP เครือข่ายสาธารณะ หลังจากเปิดโหมดเซิร์ฟเวอร์แล้ว คุณจะสามารถเข้าถึงรูปภาพโค้ด QR ผ่านทาง http://{httpServerIP}:{httpServerPort}/{any} โดยที่ {any} อาจเป็นสตริงตัวเลขหรือตัวอักษรที่ไม่ว่างเปล่า
เมื่อเปิดโหมดกล่องจดหมายและโหมดเซิร์ฟเวอร์พร้อมกัน รูปภาพจริงจะไม่ถูกส่งเมื่อส่งอีเมล เฉพาะที่อยู่รูปภาพเท่านั้นที่จะถูกส่งไปยังกล่องจดหมาย และจะถูกส่งเพียงครั้งเดียวเท่านั้น หมดอายุ เพียงรีเฟรชอีเมล หากคุณเปิดโหมดกล่องจดหมายเท่านั้น รูปภาพจริงจะถูกส่งไปเมื่อส่งอีเมล เมื่อรหัส QR หมดอายุ คุณจะต้องตั้งค่าอีเมลว่าอ่านแล้ว (อีเมลจะถูกอ่านหลังจากที่คุณคลิกอีเมลที่มี QQ บนของคุณ โทรศัพท์มือถือ) ก่อนที่จะส่งภาพ QR code ล่าสุด
หากรายการ cmdQrcode ถูกตั้งค่าเป็น True รหัส QR จะแสดงในโหมดข้อความในคำนั้น หมายเหตุ: หากต้องการใช้โหมดข้อความ คุณต้องติดตั้งไลบรารี่และ wcwidth ด้วยตัวเอง คุณสามารถใช้ pip เพื่อติดตั้งได้
ผู้ใช้แต่ละคนในไฟล์การกำหนดค่ามีรายการ qq หากรายการนี้ได้รับการตั้งค่าเป็นหมายเลข QQ ที่แน่นอน QQBot จะเข้าสู่ระบบโดยอัตโนมัติโดยใช้ข้อมูลการเข้าสู่ระบบที่บันทึกไว้ในการเข้าสู่ระบบครั้งล่าสุดของหมายเลข QQ นี้เมื่อเริ่มต้น
หากรายการ restartOnOffline ถูกตั้งค่าเป็น True ในไฟล์กำหนดค่า QQBot จะถูกรีสตาร์ทโดยอัตโนมัติเมื่อออฟไลน์หรือสิ้นสุดโดยมีข้อผิดพลาด
ตัวเลือกนี้ใช้ได้เฉพาะในระบบที่คล้ายกับ UNIX การตั้งค่าตัวเลือก daemon ในการกำหนดค่าเป็น True จะทำให้โปรแกรมทำงานในโหมด daemon ณ จุดนี้ เอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานจะถูกเปลี่ยนเส้นทางไปยังไฟล์ daemon-$qq.log (โดยที่ $qq คือค่าของอ็อพชัน qq ในคอนฟิกูเรชัน)
ภายใต้สถานการณ์ปกติ QQBot จะเริ่มทำงานทันทีหลังจากสแกนโค้ด QR เพื่อเข้าสู่ระบบ โดยจะรับเฉพาะรายชื่อผู้ติดต่อและอัปเดตฐานข้อมูลผู้ติดต่อเมื่อจำเป็นเท่านั้น หาก startAfterFetch ในไฟล์คอนฟิกูเรชันถูกตั้งค่าเป็น True QQBot จะรอให้ได้รับรายชื่อผู้ติดต่อทั้งหมดก่อนที่จะเริ่ม โปรดทราบว่าหากมีผู้ติดต่อมากกว่านี้ก็จะใช้เวลานานขึ้น
หลังจากเริ่มต้น QQBot แล้ว เซิร์ฟเวอร์ระยะ QQBot จะถูกเปิดเพื่อตรวจสอบคำสั่งการดำเนินการที่ส่งโดยผู้ใช้ผ่านเครื่องมือบรรทัดคำสั่ง qq และคำสั่งการดำเนินการที่ส่งผ่านอินเทอร์เฟซ HTTP API โดย IP การฟังของเซิร์ฟเวอร์นี้จะอยู่ที่ 127.0.0.1 เสมอ และหมายเลขพอร์ตการฟังเริ่มต้นคือ 8188 หมายเลขพอร์ตนี้สามารถแก้ไขได้โดยการแก้ไขค่าของ termServerPort
หากหมายเลขพอร์ตเซิร์ฟเวอร์เงื่อนไข QQBot ที่กำหนดค่าไว้ไม่ใช่ค่าเริ่มต้น 8188 ดังนั้นเมื่อรันคำสั่ง qq คุณจะต้องระบุหมายเลขพอร์ตในพารามิเตอร์แรก เช่น:
$ qq 8100 send buddy jack hello
$ qq 8100 list group-member chatbot
ในทำนองเดียวกัน จำเป็นต้องเปลี่ยนหมายเลขพอร์ตของอินเทอร์เฟซ HTTP API เช่น: http://127.0.0.1:8100/send/buddy/jack/hello
หากคุณไม่จำเป็นต้องใช้คำสั่ง qq และอินเทอร์เฟซ HTTP-API คุณสามารถตั้งค่าหมายเลขพอร์ตนี้เป็น 0 และเซิร์ฟเวอร์คำศัพท์ QQBot จะไม่ถูกเปิดในเวลานี้
หากคุณต้องการเข้าสู่ระบบหมายเลข QQ หลายหมายเลขบนเครื่องเดียวกัน คุณสามารถเปิดกระบวนการ qqbot หลายกระบวนการในเทอร์มินัลที่แตกต่างกันได้โดยตรงเพื่อเข้าสู่ระบบ อย่างไรก็ตาม แต่ละกระบวนการ qqbot จะต้องตั้งค่า termServerPort และ httpServerPort ของตัวเอง (หรือตั้งค่าทั้งหมดเป็น 0 หรือค่าว่าง ) มิฉะนั้นจะเกิดการขัดแย้งกันของหมายเลขพอร์ต
หากรายการตรวจแก้จุดบกพร่องถูกตั้งค่าเป็น True ข้อมูลการแก้จุดบกพร่องจะถูกพิมพ์ระหว่างการทำงาน
โดยทั่วไป ปลั๊กอินจะต้องถูกจัดเก็บไว้ในไดเร็กทอรีการนำเข้าของระบบหรือไดเร็กทอรี ~/.qqbot-tmp/plugins คุณสามารถกำหนดค่าไดเร็กทอรีหน่วยเก็บข้อมูลอื่นได้ในตัวเลือก PluginPath นอกจากนี้ ในตัวเลือกปลั๊กอิน คุณสามารถระบุปลั๊กอินที่ต้องโหลดเมื่อ QQBot เริ่มทำงานได้
ตัวเลือกทั้งหมดในไฟล์การกำหนดค่ามีพารามิเตอร์บรรทัดคำสั่งที่สอดคล้องกัน และตัวเลือกที่ป้อนในพารามิเตอร์บรรทัดคำสั่งจะมีลำดับความสำคัญสูงกว่าตัวเลือกในไฟล์การกำหนดค่า ป้อน qqbot -h เพื่อดูรูปแบบพารามิเตอร์บรรทัดคำสั่งทั้งหมด
การกำหนดค่าในโปรแกรมมีสี่ระดับ และลำดับความสำคัญมีดังนี้:
使用 qqbot -u somebody 启动程序时,依次加载:
根配置 -> 默认配置 -> 用户 somebody 的配置 -> 命令行参数配置
使用 qqbot 启动程序时,依次加载:
根配置 -> 默认配置 -> 命令行参数配置
ในหมู่พวกเขา: การกำหนดค่ารูทได้รับการแก้ไขและผู้ใช้ไม่สามารถแก้ไขได้ การกำหนดค่าเริ่มต้นและการกำหนดค่าผู้ใช้สามารถแก้ไขได้โดยผู้ใช้ในไฟล์ v2.x.conf ในที่สุดก็สามารถป้อนการกำหนดค่าในพารามิเตอร์บรรทัดคำสั่งได้
เมื่อ qqbot ทำงาน มันจะค้นหา/สร้างไฟล์/ไดเร็กทอรีต่อไปนี้ในไดเร็กทอรีการทำงาน:
ไดเร็กทอรีการทำงานเริ่มต้นคือ ~/.qqbot-tmp/ คุณสามารถระบุไดเร็กทอรีการทำงานอื่นๆ ผ่านพารามิเตอร์บรรทัดคำสั่ง -b|--bench เมื่อเริ่มต้น qqbot เช่น: qqbot -b bench
จริงๆ แล้วปลั๊กอินคือโมดูล python ดังนั้นจึงสามารถเป็นไฟล์ python หรือแพ็คเกจ python ได้ qqbot จะค้นหาปลั๊กอินในไดเร็กทอรีต่อไปนี้ตามชื่อปลั๊กอิน:
วิธีปลั๊กร้อน
คุณสามารถโหลด/ยกเลิกการโหลดปลั๊กอินได้แบบไดนามิกระหว่างการรัน qqbot มีสามวิธี:
สองวิธีแรกถูกเรียกโดยกระบวนการภายนอกของกระบวนการ qqbot และวิธีที่สามถูกใช้ภายในกระบวนการ qqbot อย่าใช้สองวิธีแรกภายในกระบวนการ qqbot
หมายเหตุ: ปลั๊กอินที่โหลดโดยใช้วิธี hot-plug จะหายไปหลังจาก qqbot รีสตาร์ท
โหมดเสียบอัตโนมัติเมื่อเริ่มต้น
คุณยังสามารถโหลดปลั๊กอินได้โดยอัตโนมัติเมื่อ qqbot เริ่มทำงาน เพียงระบุชื่อของปลั๊กอินที่ต้องโหลดในตัวเลือกปลั๊กอินในการกำหนดค่า (พารามิเตอร์บรรทัดคำสั่ง -pl|--ปลั๊กอิน) ปลั๊กอินเหล่านี้จะถูกโหลดเมื่อเริ่มต้นก่อนที่จะเข้าสู่ระบบ
นอกจากนี้ หากมีแพ็คเกจชื่อ qqbotdefault ในระบบ (หรือในไดเร็กทอรีปลั๊กอิน) โมดูลย่อยทั้งหมดภายใต้แพ็คเกจจะถูกโหลดเป็นปลั๊กอินโดยอัตโนมัติเมื่อเริ่มต้น (หมายเหตุ: qqbotdefault เองจะไม่ถูกโหลดเป็น ปลั๊กอิน)
การเขียนปลั๊กอินส่วนใหญ่เกี่ยวข้องกับการเขียนฟังก์ชันการเรียกกลับหรือฟังก์ชันงานที่กำหนดเวลาไว้ ดูส่วนที่ 4 ถึง 6 สำหรับรายละเอียด
ชื่อ | ผู้เขียน GitHub | คำอธิบายฟังก์ชัน | ไม่ว่าจะโหลดตามค่าเริ่มต้นหรือไม่ |
---|---|---|---|
qqbot.plugins.sampleslots | แพนโดเลีย | ตัวอย่างฟังก์ชั่นการโทรกลับ | ใช่ |
qqbot.plugins.schedrestart | แพนโดเลีย | การรีสตาร์ทตามกำหนดเวลา | ใช่ |
qqbot.plugins.miniirc | แพนโดเลีย | เซิร์ฟเวอร์ไออาร์ซี | เลขที่ |
รหัสผ่านเข้าสู่ระบบ | แพนโดเลีย | เข้าสู่ระบบโดยใช้ชื่อผู้ใช้-รหัสผ่าน | เลขที่ |
บล็อกโฆษณา | feisuweb | การบล็อกโฆษณาแบบกลุ่ม | เลขที่ |
บันทึกการสนทนา | feisuweb | บันทึกเนื้อหาแชท | เลขที่ |
หากคุณมีปลั๊กอินที่เป็นประโยชน์ที่จะแบ่งปัน โปรดส่งอีเมลถึงฉัน
ภายใต้ระบบ Linux เนื่องจากไม่สามารถใช้ไคลเอ็นต์ QQ ได้ จึงสามารถใช้ปลั๊กอิน qqbot.plugins.miniirc เพื่อใช้งานฟังก์ชันแชท IRC ได้ วิธีการโหลด: qq plug qqbot.plugins.miniirc หรือโหลดเมื่อเริ่มต้น: qqbot -pl qqbot.plugins.miniirc หรือเพิ่ม qqbot.plugins.miniirc
ให้กับตัวเลือกปลั๊กอินในไฟล์การกำหนดค่า
หลังจากโหลดปลั๊กอินแล้ว เซิร์ฟเวอร์ micro IRC จะถูกเปิดบนพอร์ต 6667 ผู้ใช้สามารถใช้ไคลเอนต์ IRC (เช่น weechat, irssi เป็นต้น) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์นี้เพื่อทำการแชทในโหมดบรรทัดคำสั่ง ข้อมูลต่อไปนี้ใช้ weechat เป็นตัวอย่างเพื่อแนะนำวิธีใช้งาน:
启动 weechat : weechat
连接本服务器: /connect localhost
进入 群聊天 会话: /join group-name
进入 讨论组聊天 会话: /join !discuss-name
进入 好友聊天 会话: /query buddy-name
进入 聊天会话 后,直接敲入文本并回车就可以向对方发送消息了。所有接收到的 QQ 消息也会被转发给相应的 聊天会话 。
在聊天会话之间切换: ctrl+P 或 ctrl+N
显示所有 群和讨论组 的名称: /list
ข้างต้นคือฟังก์ชันเกือบทั้งหมดที่มีให้ในเซิร์ฟเวอร์ micro IRC นี้ แต่การแชทกับเพื่อน/กลุ่ม/กลุ่มสนทนา QQ ก็เพียงพอแล้ว
QQBOT หมายถึงโครงการโอเพนซอร์สต่อไปนี้:
ฉันขอขอบคุณผู้เขียนสามคนข้างต้นสำหรับการแบ่งปันที่เสียสละของพวกเขาโดยเฉพาะ Scienjus สำหรับการวิเคราะห์เชิงลึกและรายละเอียดของโปรโตคอล SMARTQQ