อลิซบอต
เฟรมเวิร์กโรบ็อตหลายแบ็กเอนด์แบบอะซิงโครนัสอย่างง่ายของ Python
เอกสารประกอบ · คำแนะนำ · การอ้างอิง API · ตัวอย่าง
การแนะนำ
AliceBot เป็นเฟรมเวิร์กโรบ็อตหลายแบ็กเอนด์แบบอะซิงโครนัสแบบง่ายที่รองรับการปรับโปรโตคอลหลายตัว คุณสามารถเขียนปลั๊กอินที่ง่ายต่อการเรียนรู้และใช้เพื่อขยายฟังก์ชันการทำงาน
โปรเจ็กต์นี้ได้รับแรงบันดาลใจจากโปรเจ็กต์ NoneBot คุณสามารถตรวจสอบความเหมือนและความแตกต่างระหว่างสองโปรเจ็กต์ได้ในส่วนการเปรียบเทียบ เพื่อให้คุณสามารถเลือกเฟรมเวิร์กโรบอตที่เหมาะสมกับคุณมากขึ้น
คุณสมบัติ
- เรียบง่าย : AliceBot ใช้วิธีการเขียนปลั๊กอินที่ยืดหยุ่นและใช้งานง่าย คุณจะต้องเขียนเพียงสองวิธีเพื่อใช้ปลั๊กอินที่มีประสิทธิภาพ
- ยืดหยุ่น : โปรโตคอลการปรับตัวของ AliceBot ไม่ได้เชื่อมโยงกับไลบรารีหรือโปรโตคอลเครือข่ายใดๆ คุณสามารถเลือกหรือเขียนอะแดปเตอร์ที่เหมาะกับคุณได้
- ประสิทธิภาพ : AliceBot ใช้ I/O แบบอะซิงโครนัสของ Python และสามารถรองรับคำขอจำนวนมากได้อย่างง่ายดาย บรรจุภัณฑ์น้อยลง เพื่อให้ได้ประสิทธิภาพสูงสุดในขณะที่ยังคงใช้งานง่าย
ปัจจุบัน AliceBot ยังคงรักษาการปรับโปรโตคอลดังต่อไปนี้อย่างเป็นทางการ:
- โปรโตคอล OneBot (CQHTTP) (รองรับ QQ ฯลฯ) วิธีการเชื่อมต่อ ws และ ws-reverse
- โปรโตคอล OneBot v12 ws และ ws-reverse วิธีการเชื่อมต่อ
- mirai-api-http protocol 2.0+ ws และวิธีการเชื่อมต่อแบบย้อนกลับ-ws
- วิธีการเชื่อมต่อขาออก (โทรกลับ) ของ DingTalk Enterprise Robot
- วิธีการสำรวจหุ่นยนต์โทรเลขและการเชื่อมต่อเว็บฮุค
กำลังมีการปรับเปลี่ยนโปรโตคอลเพิ่มเติม...
ข้อมูลเพิ่มเติม: บทนำ - เอกสาร AliceBot
เริ่มตอนนี้
ติดตั้ง:
pip install alicebot[all]
โครงการ AliceBot แรก:
from alicebot import Bot
bot = Bot ()
bot . load_adapters ( "alicebot.adapter.cqhttp" )
bot . run ()
ปลั๊กอิน AliceBot แรก:
from alicebot import Plugin
class Echo ( Plugin ):
async def handle ( self ) -> None :
await self . event . reply ( self . event . message . replace ( "echo " , "" ))
async def rule ( self ) -> bool :
if self . event . adapter . name != "cqhttp" :
return False
if self . event . type != "message" :
return False
return self . event . message . startswith ( "echo " )
ดูเอกสารประกอบของ AliceBot สำหรับข้อมูลเพิ่มเติม
ตัดกัน
โปรเจ็กต์นี้ได้รับแรงบันดาลใจจากโปรเจ็กต์ NoneBot ต่อไปนี้เป็นคำแนะนำสั้นๆ เกี่ยวกับความเหมือนและความแตกต่างระหว่างทั้งสอง
จุดที่คล้ายกัน:
- ทั้งสองเขียนด้วย Python และใช้เฟรมเวิร์กโรบ็อตประสิทธิภาพสูงแบบอะซิงโครนัสแบบ coroutine
- ทั้งสองรองรับหลายโปรโตคอล
- ทั้งสองจะแยกวิเคราะห์และประมวลผลเหตุการณ์ที่หุ่นยนต์ได้รับ และแจกจ่ายไปยังปลั๊กอิน (ตัวตอบกลับเหตุการณ์) ตามลำดับความสำคัญเพื่อทำหน้าที่เฉพาะให้เสร็จสมบูรณ์
- ทั้งสองแบบเป็นโอเพ่นซอร์สตามใบอนุญาต MIT ซึ่งหมายความว่าคุณสามารถใช้โปรเจ็กต์นี้ได้ตราบใดที่คุณปฏิบัติตามใบอนุญาต
ความแตกต่าง:
- โดยทั่วไป NoneBot เป็นเฟรมเวิร์กโรบ็อตที่ครอบคลุมมากกว่า ในขณะที่ AliceBot เป็นเฟรมเวิร์กโรบ็อตขนาดเล็กและกระชับซึ่งไม่มีคุณสมบัติขั้นสูงที่ซับซ้อน แต่มีความยืดหยุ่นและเรียนรู้ง่ายกว่า
- สไตล์การเขียนปลั๊กอินของ AliceBot แตกต่างจาก NoneBot ในทางกลับกัน AliceBot มุ่งเน้นไปที่ความง่ายในการเข้าและ "กรอบงานแบบก้าวหน้า" ซึ่งหมายความว่าฟังก์ชันส่วนใหญ่ของ AliceBot เป็นทางเลือกและคุณจำเป็นต้องรู้ความรู้เพียงเล็กน้อยเท่านั้น เริ่มต้นใช้งาน เมื่อโปรเจ็กต์ของคุณมีขนาดและความซับซ้อนเพิ่มขึ้น คุณสามารถเจาะลึกคุณสมบัติที่คุณต้องการต่อไปได้โดยไม่ต้องเชี่ยวชาญคุณสมบัติทั้งหมดทันที “เป็นกรอบการทำงานที่สามารถเติบโตไปพร้อมกับคุณและปรับให้เข้ากับความต้องการที่แตกต่างกันของคุณ”
- NoneBot เชื่อมโยงกับโปรโตคอลการสื่อสาร HTTP/WebSocket อย่างลึกซึ้งในแง่ของการใช้งาน ต้องใช้ "ไดรเวอร์" ที่รองรับโปรโตคอลเซิร์ฟเวอร์ ASGI ในขณะที่ AliceBot ไม่ได้ผูกมัดกับโปรโตคอลใดๆ เลย มันยังสามารถใช้เพื่อขับเคลื่อนลำโพงอัจฉริยะ Raspberry Pi ของคุณได้ . แน่นอนว่าไม่มีความแตกต่างหากคุณต้องการเพียงเฟรมเวิร์กบอทที่รองรับเครื่องมือแชทบนเว็บทั่วไป
- NoneBot มีฐานผู้ใช้และขนาดชุมชนที่ค่อนข้างใหญ่ และยังมีปลั๊กอินจำนวนมาก ในขณะที่ AliceBot เป็นโปรเจ็กต์ที่เพิ่งเริ่มต้น ซึ่งหมายความว่าหากคุณใช้ NoneBot คุณอาจพบว่าการค้นหาปลั๊กอินที่คุณสนใจนั้นง่ายกว่า ในที่เขียนไว้และคุณยังสามารถค้นหาข้อมูลที่เกี่ยวข้องหรือรับคำตอบได้เร็วขึ้นเมื่อพบปัญหา
โดยรวมแล้วทั้งสองมีลักษณะเป็นของตัวเองและคุณสามารถเลือกได้ตามความต้องการของคุณ
ใบอนุญาต
AliceBot เป็นโอเพ่นซอร์สภายใต้ใบอนุญาต MIT
ไอคอนสำหรับโปรเจ็กต์นี้วาดโดย Misty Little Dream God และเปิดให้ใช้เป็นส่วนหนึ่งของโปรเจ็กต์นี้ภายใต้ใบอนุญาตเดียวกันกับโปรเจ็กต์นี้