Make your own free website on Tripod.com
สอนการเขียนบอทอย่างง่าย

บอท(bot) หมายถึง โปรแกรมที่ทำขึ้นเพื่อใช้ใน IRC หรือจะให้เข้าใจง่ายๆก้อ คือ เป็นโปรแกรมที่นำมาใช้ใน pirch นั้นเอง
บอทอันที่จริงมีหลายประเภท ได้แก่ tnt , div , eggdrop แต่ในที่นี้ขอบอกเกี่ยวกับ tnt

ประโยชน์ของบอท
     เมื่อคุณเล่น pirch แล้วเป็นเจ้าของห้องทำไงห้องคุณจึงจะอยู่ได้ถาวร ไม่หายเมื่อไม่มีคน อยู่ในห้อง คุณก้อต้องอาศัย บอทนี้แหละครับ
และยังมีประโยชน์อีกมากมาย เช่น ควบคุม ห้องให้ auto op แก่เรา ฯลฯ

ขั้นตอนแรก
1. ต้องมี account หรือ acc ก่อน ซึ่งหาได้จากมหาลัย โรงเรียน
2. เมื่อคุณมี acc แล้ว คุณก็ต้องรู้ host หรือ telnet ของสถาบันนั้น

วิธีสร้าง
คุณจะต้องมี 2 ไฟล์นี้ก่อน (เพื่อไม่ให้สับสนควรดาวโหลดจากที่นี้ไปเลย จะได้เข้าใจตรงกัน)

tnt2-Solaris.tgz กับ tnt2-common.tgz

เมื่อดาวโหลดไฟล์แล้ว คุณต้องโอนไฟล์ 2 ไฟล์นี้ขึ้นบน acc ของคุณ วิธีโอนไฟล์ หรือเรียก FTP คุณต้องใช้โปรแกรม เช่น WS_FTP , CUTE_FTP โอนไฟล์เข้า acc โดยต่อ host และ acc ของคุณ

  1. เมื่อโอนไฟล์เสร็จแล้ว คุณก็เปิดโปรแกรม Telnet โดยไปที่ Start Menu->Run พิมพ์ telnet (ชื่อhost) แล้ว Enter แค่นี้ก็จะขึ้นโปรแกรม Telnet ขึ้นมา พร้อมให้คุณใส่ login และ passwoad เมื่อคุณใส่เสร็จแล้ว ก็จะเข้าสู่ ระบบ unix ของสถาบันนั้น คุณจะเห็นเครื่องหมาย " $ "
  2. ก่อนอื่นขอบอกเกี่ยวกับภาษา unix ที่ต้องใช้ในการทำบอทสักเล็กน้อย
  3. เมื่อคุณเข้าสู่ระบบ unix เรียบร้อยแล้ว ลองพิมพ์ " ls " เพื่อดูว่าใน acc ของคุณว่ามีไฟล์ 2 ไฟล์ที่นั้นหรือป่าว ถ้ามีแสดงว่าคุณโอนไฟล์เสร็จแล้ว ถ้าไม่มีคุณต้องโอนไฟล์ขึ้น acc ของคุณใหม่
  4. หลังจากนั้นคุณต้อง unzip ไฟล์ 2 ไฟล์นี้ก่อน เพราะไฟล์ที่ดาวโหลดมาเป็นไฟล์ zip โดยพิมพ์
    gzip -d tnt2-Solaris.tgz หรือ gzip -dc tnt2-Solaris.tgz

    gzip -d tnt2-common.tgz หรือ gzip -dc tnt2-common.tgz
  5. เมื่อ gzip แล้วไฟล์จะเปลี่ยนชื่อเป็น tnt2-Solaris.tar กับ tnt2-common.tar
  6. ให้คุณพิมพ์
    tar -xvf tnt2-Solaris.tar
    tar -xvf tnt2-common.tar
  7. หลังจาก unzip ไฟล์แล้วก็จะได้ ไดเรกเทอรี ชื่อ tnt2-57e มา คุณต้องแก้ไข 3 ไฟล์ คือ infile.cfg , users.1 , nicks.1 ก่อนอื่นคุณต้องเข้าไปในไดเรกเทอรี่ tnt2-57e ก่อน โดยพิมพ์ cd tnt2-57e
  8. เมื่อเข้าไปแล้ว ก็พิมพ์ pico infile.cfg คุณต้องแก้ไข
****บรรทัดที่มีเครื่องหมาย " # " นำหน้าคือบรรทัดที่เป็น comment(คำอธิบาย) ไม่มองเป็นคำสั่ง**** ############################################################################
############ CONFIG FILE FOR TNT-II Version 5.7e ############
############ BY: ttone (tonys@access.mountain.net) ############
############ RELEASED: July 1997 ############
############################################################################
#--------------------------------------------------------------------------#
# PLEASE REFER TO "README.cfg" FILE FOR DETAILS
#=========================================================================#
# NOTES:
# - The equal sign, "=", is optional in all settings, be they toggles
# (1/0: true/false), numeric values, or strings.
# - Toggle settings MUST be preceded by an exclamation mark or the
# keyword "toggle ".
# - Numeric value settings MUST be preceded by a percent sign, '%', or the
# keyword "set ".
# - String settings MUST be enclosed in quotation marks, '"'.
#

# config debug level: 0=none, 1=errors only, 2=every line
%debug = 2

# the bot reset interval, in seconds: used to reset to original nick,
# rejoin channel after being banned/+i,+k,+l
# keep this interval between 40 and 90+ seconds
%ResetInterval = 70
%NiceLevel = 3 # be nice to system
%AuthLifetime = 20 #authorization lifetime: in minutes
%MemoryLifetime = 30 #memory lifetime: in minutes

OwnerNick = "" <====อันนี้คือ Nick ของเจ้าของบอท
OwnerEmail = "SomeUSER@machine.DOMAIN" <====อันนี้คือ Email ของเจ้าของบอท
OwnerUhost = "*!*SomeUSER@*.DOMAIN" <====อันนี้คือ Nick , Username , host ของเจ้าของบอท ซึ่งมีรูปแบบ Nick!Username@host

#KlogFile "./mklog" <====อันนี้บอกให้รู้ว่า file ที่ใช้ลบ log ต่างๆอยู่ที่รากอะไร ซึ้งก็คือ file mklog (./ คือ ไดเรกเทอรี่ที่อยู่ขณะนั้น)
BotDir "./" <====อันนี้บอกให้รู้ว่า โปรแกรม บอท เราอยู่ที่ ไดเรกเทอรี่ใด
ExtcmdFile "./extcmds.bot"

NewsFile "./news.bot"
NoteFile "./note.bot"
LogchatFile "/tmp/chat.log" <====อันนี้บอกให้รู้ว่า file ที่ใช้เก็บคำพูดต่างๆที่พูดกันในห้อง คือ file อะไร อยู่ที่ไหน
CmdlogFile "/tmp/cmd.log" <====อันนี้บอกให้รู้ว่า file ที่ใช้เก็บ command ต่างๆที่ใช้กันในห้องไปคือ file อะไรอยู่ที่ไหน
PicFile "./pics.bot"
MotdFile "./motd.bot"

# some user configurable CTCP reply messages <====ส่วนนี้เป็นส่วนที่ไว้แสดงสถานะต่างๆเมื่อถูกคน ctcp มา
#FingerMsg = "Hey, watch where you point your fingers!"
#VersionMsg = "I-Can't-Keep-Up v0.0"
#ClientInfo = "Hi! Pleased to meet you! I'm a bot! @_@"
#UserInfo = "None supplied"

# to get rid of the above replies, uncomment the following lines
#FingerMsg "" <====ส่วนนี้แสดงข้อความเวลาที่มีคน finger บอท
#VersionMsg "" <====ส่วนนี้แสดงเวอร์ชั่นของบอท
#ClientInfo "" <====ส่วนนี้แสดงข้อมูลของบอท
#UserInfo "" <====ส่วนนี้แสดงข้อมูลของบอท

# max. number in kilobytes allowed in an upload to the bot
%MaxUploadSize = 300
# time in seconds allowed for a dcc chat to be idle before being cutoff
# -- this does not apply to users on party line
%IdleTimeOut = 3000
# time in seconds to wait for a dcc chat before closing the chat request
# Note that the DCC password wait interval is pre-set at 120 seconds.
%WaitTimeOut = 90
%GreetInterval = 10

# parameters for detecting flooding due to MSGS and PUBMSGS
# The format is as follows: type, rate, interval, reset time
#
# ! FLOODSET DCCMSGS settings are now put into use !
# ! -- refer to FloodKickLines for public flood kick setting -- !
# ! -- PubFloodRate and MsgFloodRate bot settings are no longer used -- !
# The interval setting is for the time interval to detect the various floods.
#
#command type lines interval (sec.) ignore length (sec.)
#--------------------------------------------------------------------------
floodset MSGS 5, 1, 52
floodset PUBMSGS 6, 1, 51
floodset DCCMSGS 50, 2, 50
#--------------------------------------------------------------------------

Nick "GrInS" <====นี้คือ Nick ชื่อของบอท ในกรณี้ที่บอทหลายตัวจะเอาชื่อมาจากไฟล์ nicks.1
# ! -- BOOLEANS: 0 = FALSE, 1 = TRUE
!DieOnKill = 1 #DO EXIT when killed by IrcOP
!Invisible = 1
!Greet = 0
!AntiIdle = 1 #Don't let self idle: default is TRUE
TOGGLE CtcpRespond 1 #This is the same as !CtcpRespond 1
Toggle NickFloodCheck 1
Prefix | <====อันนี้ คืออักขระที่จะสั่งบอท อาจเปลี่ยนเป็น + , ! , & (จะนำไปใช้ตอน ping บอท เช่น +ping)
PrefixWord "nobody" <====คำสั่งที่จะสั่งบอท
Username " " <====อันนี้ คือ ident ของบอท ใส่ก้อได้ ไม่ใส่ก้อได้
IrcName "Smile! \b(:\b " <====Username ของบอท เวลามีคน /whois
UpLoadDir "/tmp/" <====กำหนด ไดเรกเทอรี่สำหรับเก็บ file ที่ใช้ upload
DownLoadDir "./" <====กำหนด ไดเรกเทอรี่สำหรับเก็บ file ที่ download
AwayMsg "" <====กำหนด Away Message
userlist "./users.1" <====อันนี้บอกให้รู้ว่า file ที่ใช้เก็บรายชื่อคนที่จะสั่งบอทได้
aklist "./autokick.1" <====อันนี้บอกให้รู้ว่า file ที่ใช้เก็บรายชื่อคนที่ต้องการให้ บอท kick/ban อัตโนมัติ
nicklist "./nicks.1" <====อันนี้บอกให้รู้ว่า file ที่ใช้เก็บ Nick ของบอท
ignorelist "./ignores.1"
FileList "./filelist.bot"
TOGGLE DoCheckNote 1 # whether to announce to people joining a
# channel if they have notes on the bot
TOGGLE ProtAccessDiff 1 # user protection also depends on access diff.
!AutoDccConnect 0 # allow auto dcc connections
# i.e. the bot can initiate dcc connections
SET NickChangeInterval 1200 # in seconds <====อันนี้ตั้งเวลาที่จะเปลี่ยน Nick ของบอท
%MinDCClevel 1 # userlevel required for dcc connection; 0=open
%OpNonUserLevel = 150 # when STRICT OP is turned on for a channel <====เป็นส่วนที่กำหนด level ขั้นต่ำที่สามารถ op user ได้
%MassLevel = 200 # user access immune level for masskick/deop
%MassKicks = 4 # Number of kicks to trigger masskick prot.
%MassDeops = 4 # Number of deops to trigger massdeop prot.
%IdleTime = 3600 # in seconds; used for kicking idle users
%AlwaysOpLevel = 1000 # userlevel of users to auto-op rather than
# delay it if he/she is on auto-op; level of
# 1000 means everyone is on delayed aop
%ChanModeLevel = 150 # user w/ access 150 and up can change enf. mode <====เป็นส่วนที่กำหนด level ขั้นต่ำที่สามารถเปลี่ยน mode ของห้องได้

#NOTE: 0 = FALSE, 1 = TRUE
!NickChange 0 <====กำหนดให้มีการเปลี่ยน Nick ของบอทหรือไม่ ( 0=Yes , 1=No )
!NeedPrefix 1 # if cmd char is needed in public for cmds.
!RandomNick 0 # random nick change
!ChangeNickOnKill 1 # useless if killed by ircop and DieOnKill=1
!ChangeNickOnKick 0
!PartyLine 1 # turn on party line
!KickOnHackJoin 1 # whether to kick banned users who rejoin chan
!AllowGet 0
!AllowSend 1
!LogCmds 1 # whether to log commands issued <====กำหนดให้มีการเก็บคำสั่งต่างๆที่สั่งบอทไป ส่งใน log file หรือไม่
!LogPrivMsg 1 # whether to log msgs sent to bot <====กำหนดให้มีการเก็บข้อความที่พูดกับบอท ลงใน log file หรือไม่
%LogCmdLevel = -2 # -2 for logging of all commands
SET FloodKickLines 6 # no. of pub msgs to detect for flood kick <====กำหนดจำนวนบรรทัดที่ flood แล้วจะโดน kick
!LogKickBan 0 # whether to log kicks and bans <====กำหนดให้มีการเก็บประวัติการ kick/ban ลง log file หรือไม่
!ServerInfo 0 # do try to get server info for users

# AwayMsg "Not really here"
# FORMAT: Server "server_name",server_port,"hostname","server_password"
Server "localhost",6667 <====รายชื่อ Server และ Port ที่จะส่งบอทเข้าไป (ถ้าไม่ต้องการให้ใส่ " # " ไว้ข้างหน้า)
Server "localhost",6666
# Server "irc.pitt.edu",6667
# Server "irc.pitt.edu",6665
# Server "irc.xmission.com",6667
# Server "irc.colorado.edu",6667


Channel "#smiles2","nst","Smiles for all" <====กำหนด "ห้อง" , "กำหนดค่าในห้อง" , "ตั้งTopic ห้อง" ที่จะส่งบอทเข้าไป
# Mode "nslt 4"
# Topic "Smiles for all "
# %TopicResetInterval 49 # in minutes <====กำหนดระยะเวลาการ reset topic
%QuoteInterval -1 # don't quote at all <====กำหนดระยะเวลาการนำข้อความใน quotes.bot ออกมาใช้ ( -1= ไม่มีการนำข้อความมาใช้)
%EnfModeKickLevel 1 # nonusers cannot change enfmode
%AutoDebanInterval = 360 # autodeban interval (in minutes) <====กำหนดระยะเวลาที่จะ deban
#NOTE: 0 = FALSE, 1 = TRUE
!logchat 0 <====กำหนดให้มีการเก็บข้อความที่พูดกันในห้องลงใน log หรือไม่ (0=Yes , 1=No)
!KickProtected 0 # if protected users can be kicked <====กำหนดให้มีการป้องกันการ kick หรือไม่ (0=Yes , 1=No)
!DelayOp 1 # whether to delay auto-ops: USE IT!
!AutoDeban 1 # auto-expire channel bans
!Noserverop 1 # whether to deop nonuser ops by servers
!Publiccmd 1 # whether commands can be public msgs
!Stricttopic 0 # whether to enforce bot's topic
!Protection 1 # user protection
!AutoKick 1 # kick people on autokick
!Enforcemode 1 # to enforce bot's mode for chan.
!Autoop 1 # turn on auto-op in this chan.
!Massprot 1 # check for mass modes protection
!Idlekick 0 # whether to kick idle users
# - set IdleTime accordingly!
Channel "#tnt2bot","nlst 11","Channel for fellow TnT2 bots!"
# Mode "nlt 10"
# %TopicResetInterval 26 # in minutes
%QuoteInterval 7 # in minutes
%EnfModeKickLevel 1 # do kick on mode change
!AutoRejoin 1
!AutoDeban 0
!DelayOp 1
!Stricttopic 1
!Enforcemode 1
!KickJustBanned 0
#--------------------------------------------------------------------------
  1. เมื่อแก้ไขเสร็จแล้ว ก็กด Ctrl+x แล้ว กด " Y " เพื่อ save ไฟล์ที่แก้ไข
  2. หลังจาก save แล้ว ก็เปิดไฟล์ nicks.1 เพื่อใส่ชื่อของบอทเวลามีการรันบอทหลายตัว โดยพิมพ์ pico nicks.1 ########################################################################
    # Nick List: ./nicks.1
    # Created: Sun Jul 20 14:47:40 1997
    # (NOTE: Max of 16 nicks only!)
    # For TnT-II version 5.7e
    ########################################################################
    # FORMAT= index:nick
    1:smiles <====ใส่ Nick ของบอทได้สูงสุด 16 ชื่อเท่านั้น
    ### End of ./nicks.1
  3. เมื่อแก้ไขเสร็จแล้ว ก็กด Ctrl+x แล้ว กด " Y " เพื่อ save ไฟล์ที่แก้ไข
  4. หลังจาก save แล้ว ก็เปิดไฟล์ users.1 เพื่อใส่ชื่อคนที่มีสิทธิ์ที่จะสั่งบอทได้ โดยพิมพ์ pico users.1 ########################################################################
    # Users List: ./users.1
    # Created: Sun Jul 20 14:48:41 1997
    # For TnT-II version 5.7e
    ########################################################################
    # index:n!u@h:passwd:nick:access:umodes:protlvl:chan:sus_by:sus_time:added_at
    #------|-----|------|----|------|------|-------|----|------|--------|--------
    001:*!*st9@*.cis.pitt.edu:NP:ttne:999:5:4:*:NONE:0:804474664
    002:*!*ne@localhost:NP:tne2:999:1:4:*:NONE:0:806611003 <====ใส่ได้มากสุดไม่เกิน 13 คนนะครับ
    003:*!*ne@slip*.net:NP:tnex:999:1:4:*:NONE:0:806611003

    ### End of ./users.1


    index:n!u@h:passwd:nick:access:umodes:protlvl:chan:sus_by:sus_time:added_at
    001:*!*n_seemork@*21300:*UNKNOWN*:999:0:6:*:NONE:0:804474664

  5. เมื่อแก้ไขเสร็จแล้ว ก็กด Ctrl+x แล้ว กด " Y " เพื่อ save ไฟล์ที่แก้ไข
  6. หลังจากแก้ไข 3 ไฟล์เสร็จเรียบร้อยแล้ว ก็พิมพ์ ./tnt2 หรือ gotnt2 ประมาณ หลายๆๆครั้ง ก็นับว่าบอทของคุณจะมาแน่!
    การตรวจเช็คบอทว่ามาหรือไม่
  1. คุณต้องเข้าโปรแกรม irc แล้วเข้า Server และ ห้อง ที่คุณส่งบอทเข้าไป
  2. ลองพิมพ์ +ping (หรือ !ping ขึ้นอยู่กับ prefix ของคุณ) ถ้ามีบอทมีการตอบ --=*==<< PONG >>==*=-- ก้อแสดงว่า บอทของคุณมาแล้วพร้อมที่จะให้คุณสั่งได้

คำสั่งที่ใช้สั่งบอทใน irc
เมื่อคุณมีบอทแล้ว แต่สั่งไม่เป็นก็ไร้ประโยชน์ ดังนั้นผมขอยกมากเล็กน้อย ถ้าหากคุณต้องการรายละเอียดมากกว่านี้ก็ไปอ่านใน help ของไฟล์ bot นะครับ....
/msg (ชื่อบอท) จุดauth (ชื่อเจ้าของ) เป็นการสั่งบอทให้รับรู้เจ้าของ
/msg (ชื่อบอท) lin (ชื่อเจ้าของ) เป็นการสั่งบอทให้รับรู้เจ้าของ
/msg (ชื่อบอท) +join #ชื่อห้อง ที่จะเอาบอทไปลงไว้นี่เป็นการสั่งงานในการรันบอทให้เข้าไปในห้องนั้น
/msg (ชื่อบอท) จุดjoin #ชื่อห้อง ที่จะเอาบอทไปลงไว้นี่เป็นการสั่งงานในการรันบอทให้เข้าไปในห้องนั้น
/msg (ชือ่บอท) +part #(ชื่อห้องที่บอทอยู่) (command) นี่เป็นการรันบอทออกจากห้อง
/msg (ชือ่บอท) จุดleave #(ชื่อห้องที่บอทอยู่) นี่เป็นการรันบอทออกจากห้อง
/msg (ชื่อบอท) +mode (#ชื่อห้อง) +q (ชื่อเรา) นี่เป็นการสั่งให้บอทให้owner เรา
/mode (#ชื่อห้อง) +q (ชื่อบอท) นี่เป็นการสั่งให้บอทใด้ ownerเวลาเราออกจากห้อง
/msg (ชื่อบอท) +tagenfm #ชื่อห้อง นี่เป็นการสั่งให้บอทปลด modeในห้องเวลาคนอื่นเข้าไปในห้องไม่ได้
/msg (ชื่อบอท) จุดtagenfm #ชื่อห้อง นี่เป็นการสั่งให้บอทปลด modeในห้องเวลาคนอื่นเข้าไปในห้องไม่ได้
/msg (ชื่อบอท) +nick ชื่อใหม่ นี่เป็นการเปลี่ยนชื่อบอท
+op (ชื่อเจ้าของบอท) เป็นการสั้งให้บอทให้ @ แก่เรา
+me (ชื่อคนที่จะให้@) เป็นการสั้งให้บอทให้ @ คนอื่น
จุดop (ชื่อบอท) (ชื่อเจ้าของบอท) เป็นการสั้งให้บอทให้ @ แก่เรา
จุดup (ชื่อบอท) (ชื่อเจ้าของบอท) เป็นการสั่งให้บอทให้ @ แก่เรา
จุดdow (ชื่อบอท (ชื่อเจ้าของบอท) เป็นการสั่งให้บอทปลด @ ไปจากเรา
/msg (ชื่อบอท) +k (ชื่อห้อง)(ชื่อคนที่จะเตะ) เป็นการสั่งให้บอทเตะคนที่เราอยากเตะนะ
จุดk (ชื่อห้อง)แล้วชื่อคนที่เราจะเตะ(คนที่โดนเตะ) เป็นการสั่งให้บอทเตะคนที่เราอยากเตะนะ
จุดkb (ชื่อห้อง)(คนที่จะเตะ) เป็นการสั่งการให้บอทkick/ban คนที่เราจะทำนะ
+ ping ดูว่าบอทของเราอยู่หรือป่าวนะ
จุด ping ดูว่าบอทของเราอยู่หรือป่าว