หากคุณเคยใช้ Internet Relay Chat (IRC) มาก่อน คุณอาจเคยพบบอทมาก่อน บอทเป็นโปรแกรมหรือสคริปต์อิสระที่เชื่อมต่อกับเครือข่ายในลักษณะเดียวกับที่มนุษย์ทำ พวกเขาสามารถตั้งโปรแกรมให้ตอบสนองต่อคำสั่งของผู้ใช้หรือแม้แต่แชท ในคู่มือนี้ คุณจะพบตัวเลือกของคุณสำหรับการสร้างบอท IRC และวิธีการสร้างบอทจากศูนย์
ขั้นตอน
วิธีที่ 1 จาก 2: การประเมินตัวเลือก
ขั้นตอนที่ 1 พิจารณาติดตั้งสคริปต์ไคลเอ็นต์
บางครั้งคุณแค่ต้องการให้งานง่ายๆ เสร็จสิ้นและไม่ต้องการให้เป็นโปรแกรมอิสระ ในกรณีดังกล่าว คุณสามารถแนบสคริปต์กับไคลเอ็นต์ IRC ได้ นี่เป็นเรื่องปกติที่จะเกิดขึ้นกับ mIRC ซึ่งมีเอ็นจิ้นการเขียนสคริปต์ที่แข็งแกร่งและสคริปต์ที่มีอยู่มากมาย นี่เป็นตัวเลือกที่ง่ายที่สุดและขอแนะนำอย่างยิ่งหากคุณไม่มีประสบการณ์ในการเขียนโปรแกรมมากนัก สำหรับส่วนที่เหลือของคู่มือนี้ คำแนะนำจำเป็นต้องมีความรู้เกี่ยวกับการเขียนโปรแกรมคอมพิวเตอร์เพื่อปฏิบัติตาม
ขั้นตอนที่ 2 พิจารณา codebase ที่มีอยู่แล้วสำหรับบอทของคุณ
มีโอเพ่นซอร์สและโปรแกรมฟรีมากมายที่สามารถช่วยคุณตั้งค่าบอทที่คุณกำหนดเองได้อย่างรวดเร็ว ตัวอย่างหนึ่งคือ Eggdrop ซึ่งเป็นบอต IRC ที่เก่าแก่ที่สุดที่ยังคงได้รับการบำรุงรักษา
ขั้นตอนที่ 3 พิจารณาเขียนบอทของคุณเอง
สำหรับผู้ใช้ IRC ขั้นสูงและนักพัฒนาที่รู้จักภาษาการเขียนโปรแกรมอยู่แล้ว นี่เป็นตัวเลือกที่ยอดเยี่ยม คุณสามารถใช้ภาษาใดก็ได้ที่คุณต้องการตราบเท่าที่มีการสนับสนุนซ็อกเก็ต แต่ภาษาที่นิยมใช้ ได้แก่ Python, Lua, PHP, C และ Perl หากคุณไม่รู้สิ่งเหล่านี้ แต่รู้ภาษาอื่น นั่นก็ไม่ใช่ปัญหา คุณสามารถหาตัวอย่างบนเว็บในภาษาใดก็ได้ที่คุณต้องการ สำหรับบทความนี้ เราจะสาธิตการใช้ PHP ในการใช้ PHP คุณจะต้องติดตั้ง PHP-CLI บนคอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณ
- สามารถดาวน์โหลด PHP ได้จาก php.net
- สคริปต์ PHP สามารถดำเนินการได้จากบรรทัดคำสั่ง สำหรับข้อมูลเพิ่มเติมและความช่วยเหลือในการใช้ PHP โปรดดูที่หน้าคู่มือ PHP นี้
วิธีที่ 2 จาก 2: การพัฒนา Bot ของคุณเอง
ขั้นตอนที่ 1 รวบรวมรายละเอียดการเชื่อมต่อ
คุณจะต้องได้รับข้อมูลต่อไปนี้เพื่อเชื่อมต่อกับเครือข่ายได้สำเร็จ
-
เซิร์ฟเวอร์: ชื่อโดเมนของเซิร์ฟเวอร์ที่ใช้เชื่อมต่อกับ IRC เช่น
chat.freenode.net
- ท่าเรือ: ในกรณีส่วนใหญ่ นี่คือ 6667 แต่ถ้าคุณไม่แน่ใจ ให้ตรวจสอบไคลเอ็นต์ IRC ของคุณเองหรือเว็บไซต์ของเครือข่าย
- ชื่อเล่น: ชื่อเล่นที่บอทของคุณควรใช้ โปรดทราบว่าปกติแล้วไม่อนุญาตให้ใช้อักขระพิเศษบางตัว (@#!~)
-
ตัวตน: ฟิลด์ ident จะปรากฏหลังชื่อเล่นเมื่อมีคนดำเนินการ WHOIS ดังนี้:
ชื่อเล่น!ident@ชื่อโฮสต์
- GECOS: ฟิลด์นี้โดยทั่วไปจะมีชื่อจริงของผู้ใช้หรือคำอธิบายทั่วไปของบอท แต่คุณสามารถใส่อะไรก็ได้ที่คุณต้องการ
- ช่อง: โดยปกติคุณต้องการให้บอทของคุณปรากฏในช่องทางหนึ่งหรือหลายช่อง ในเครือข่ายส่วนใหญ่ สิ่งเหล่านี้จะขึ้นต้นด้วย '#' แต่อาจเป็นอย่างอื่น
ขั้นตอนที่ 2 เริ่มต้นการกำหนดค่าในสคริปต์ของคุณ
วิธีพื้นฐานที่สุดในการทำเช่นนี้คือการตั้งชื่อตัวแปรสองสามตัวตามชื่อการกำหนดค่าด้านบน คุณยังสามารถจัดเก็บไว้ในไฟล์ปรับแต่งและแยกวิเคราะห์มันได้ แต่สำหรับตอนนี้ เราจะยังคงใช้สิ่งจำเป็นเท่านั้น
ขั้นตอนที่ 3 เชื่อมต่อกับเครือข่าย
ในการดำเนินการนี้ คุณจะต้องเปิดซ็อกเก็ตไปยังเซิร์ฟเวอร์บนพอร์ตที่ระบุ คุณควรเพิ่มรหัสการจัดการข้อผิดพลาดในส่วนนี้ด้วยในกรณีที่การเชื่อมต่อล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม ในกรณีนี้ PHP มีฟังก์ชันที่เรียบร้อยเพื่อจัดการกับข้อผิดพลาดอย่างมีประสิทธิภาพ
ขั้นตอนที่ 4 ลงทะเบียนบอทของคุณ
นี่หมายถึงการส่งชื่อเล่น ข้อมูลประจำตัว และ GECOS ของคุณไปยังเซิร์ฟเวอร์ ไม่ใช่การลงทะเบียนกับ NickServ ในการดำเนินการนี้ เพียงเขียนคำสั่ง NICK และ USER ไปยังเซิร์ฟเวอร์ ตามด้วยขึ้นบรรทัดใหม่ มีความจำเป็นที่คุณจะต้องทำตามที่แสดงไว้ทุกประการ เพราะนั่นคือวิธีการที่ระบุไว้ใน RFC1459 ซึ่งเป็นข้อกำหนดสำหรับโปรโตคอล IRC
โปรดทราบว่าต้องระบุพารามิเตอร์สองตัวตรงกลาง (ในกรณีนี้คือ * และ 8) แต่เซิร์ฟเวอร์จะละเว้น ทั้งสองใช้เฉพาะระหว่างเซิร์ฟเวอร์ที่เชื่อมโยง ไม่ใช่โดยไคลเอ็นต์ที่เชื่อมต่อโดยตรง
ขั้นตอนที่ 5. ดึงข้อมูลจากซ็อกเก็ตโดยใช้ลูป
หากคุณไม่ได้ใช้การวนซ้ำ สคริปต์ของคุณจะหยุดทำงานทันทีและบ็อตจะไม่มีประโยชน์โดยทั่วไป หากต้องการเชื่อมต่อ คุณต้องดึงข้อมูลจากเซิร์ฟเวอร์ ตรวจสอบอินพุตใดๆ ในสตรีมที่คุณต้องการ และตอบกลับหากเป็นเช่นนั้น ที่นี่ เรากำลังดึงข้อมูลโดยใช้ socket_read() เพื่อดึงข้อมูลที่มีให้เรา หากมี เราจะทำสิ่งใดก็ตามที่อยู่ในวงต่อไป การส่งออกข้อมูลดิบไปยังคอนโซลอาจเป็นประโยชน์ เพื่อให้คุณเห็นว่าเกิดอะไรขึ้นจากมุมมองของบอท
ขั้นตอนที่ 6 เขียนตัวจัดการ ping
นี้เป็นสิ่งสำคัญ. หากคุณไม่ตอบสนองต่อ ping ในเวลาที่เหมาะสม เซิร์ฟเวอร์จะตัดการเชื่อมต่อคุณ มาจัดการเรื่องนั้นกันก่อน Ping มีลักษณะเช่นนี้เมื่อส่งจากเซิร์ฟเวอร์:
PING:rajaniemi.freenode.net
. เซิร์ฟเวอร์ไม่ต้องใส่ชื่อหลัง ':' เซิร์ฟเวอร์สามารถจัดหาอะไรก็ได้ตามต้องการ คุณ *ต้อง* พูดซ้ำตามที่เซิร์ฟเวอร์พูด ยกเว้นใช้ PONG
ขั้นตอนที่ 7 เข้าร่วมช่องของคุณ
โอเค เรามีบอทที่เชื่อมต่อกับเครือข่ายและตอบสนองต่อการปิง แต่ไม่ทำอะไรเลย เพื่อให้คนอื่นเห็นและใช้บอทของคุณ บอทควรอยู่ในแชนเนล (ไม่เช่นนั้นคุณจะต้องบอกให้บอทตอบกลับข้อความส่วนตัว)
- ในการทำเช่นนี้ เราจะตรวจสอบรหัสสถานะเซิร์ฟเวอร์ 376 หรือ 422 376 หมายถึง MOTD (ข้อความประจำวัน) เสร็จสิ้น 422 หมายความว่าไม่มี MOTD ใดที่จะส่ง MOTD นั้นเป็นเพียงสิ่งที่เซิร์ฟเวอร์ส่งเมื่อคุณเชื่อมต่อ แต่เป็นตัวบ่งชี้ที่ดีว่าเมื่อใดที่เราสามารถเริ่มเข้าร่วมช่องได้
- คุณจะต้องออกคำสั่ง JOIN คำสั่งนี้สามารถตามด้วยช่องสัญญาณตั้งแต่หนึ่งช่องขึ้นไปโดยคั่นด้วยเครื่องหมายจุลภาค
- ขอให้สังเกตว่าข้อมูลที่เซิร์ฟเวอร์ส่งจะถูกคั่นด้วยช่องว่างอย่างสะดวก วิธีนี้ทำให้เราสามารถแยกข้อมูลและอ้างอิงโดยใช้ดัชนีอาร์เรย์
ขั้นตอนที่ 8 ตอบกลับข้อความของช่อง
ตอนนี้สำหรับส่วนที่สนุก บอทของคุณเข้าร่วมช่องแล้ว ดังนั้นคุณจึงใช้ช่องดังกล่าวได้ตามต้องการ มาสร้างตัวอย่างคำสั่งที่ชื่อว่า @moo
- สังเกตออฟเซ็ตที่ข้อความเริ่มต้น (ใช้ได้กับทั้งแชนเนลและข้อความส่วนตัว) อยู่ในที่เดียวกันเสมอ
- คุณสามารถจัดการกับคำสั่งที่มีช่องว่างในคำสั่งเหล่านั้นได้โดยการประกบข้อมูลที่แยกเป็นชิ้นๆ เข้าด้วยกัน ($d) นั่นอยู่นอกเหนือขอบเขตของบทความนี้
- หากเป้าหมายเป็นช่องสัญญาณ (เช่น #botters-test) คุณตอบกลับไปที่นั้น หากเป็นข้อความส่วนตัว บิตนี้จะเป็นชื่อเล่นบอทของคุณ! จากนั้นคุณต้องตอบกลับโดยใช้ชื่อเล่นของผู้ส่ง ไม่ใช่ของคุณ (ไม่เช่นนั้นคุณจะพูดกับตัวเองและนั่นก็ไร้สาระ)
ขั้นตอนที่ 9 ขยายบอทของคุณ
คุณสามารถเพิ่มคุณสมบัติใหม่มากมายโดยใช้การใช้งานข้างต้น มีคำสั่งอื่นๆ มากมายที่สามารถใช้กับเครือข่าย IRC ได้ เช่น การจัดการปฏิบัติการ การเตะและการแบน การตั้งหัวข้อ และอื่นๆ อีกมากมาย
เคล็ดลับ
-
คุณสามารถสร้างผลลัพธ์ของคำสั่ง "/me" โดยนำหน้าข้อความของคุณดังนี้:
- PRIVMSG #channel:\001ACTION ข้อความที่นี่\001
-
001 หมายถึงอักขระ ASCII 1 และจะถูกตีความในลักษณะดังกล่าวในสตริง PHP ที่มีเครื่องหมายอัญประกาศคู่ หรือคุณสามารถใช้
chr(1)
- นอกสตริง
- สามารถผลิตสีได้ในข้อความโดยนำหน้า "\003" (รหัส ASCII 3) ตามด้วยตัวเลขสำหรับสี 0 = ขาว 1 = ดำ 2 = น้ำเงิน 3 = เขียว 4 = แดง […] ดูหน้า mIRC สำหรับสีเพิ่มเติม
- ตามมารยาท โปรดได้รับความยินยอมจากเจ้าของช่องและผู้ให้บริการ IRC ก่อนนำบอทของคุณเข้าสู่โลกออนไลน์ ไม่ใช่ทุกเครือข่ายและทุกช่องทางที่มีนโยบายต้อนรับบอท แม้แต่บอทที่มีมารยาทดี
- IRC daemons บางตัวมีมากกว่าข้อกำหนดของโปรโตคอลและใช้คุณสมบัติอื่นๆ หากคุณกำลังเตรียมการสำหรับเครือข่ายเฉพาะ คุณสามารถใช้คุณสมบัติเหล่านั้นได้อย่างแน่นอนหากคุณทราบเกี่ยวกับโปรโตคอลของพวกมัน อย่างไรก็ตาม หากคุณต้องการให้บอทของคุณถูกปรับใช้ในหลายเครือข่าย ให้พยายามเก็บไว้ใน RFC