ฉันเริ่มดำดิ่งสู่โลกแห่งไอทีเมื่อสามสัปดาห์ก่อน เอาจริงๆ เมื่อสามสัปดาห์ที่แล้ว ฉันไม่เข้าใจไวยากรณ์ HTML ด้วยซ้ำ และการแนะนำภาษาการเขียนโปรแกรมของฉันจบลงด้วยหลักสูตรของโรงเรียนเกี่ยวกับ Pascal เมื่อ 10 ปีที่แล้ว อย่างไรก็ตาม ฉันตัดสินใจไปที่ค่ายไอที ซึ่งเด็กๆ จะสร้างบอทคงจะดี ฉันตัดสินใจว่ามันแทบจะไม่ยากขนาดนั้น
นี่เป็นการเริ่มต้นการเดินทางอันยาวนานซึ่งฉัน:
- ปรับใช้เซิร์ฟเวอร์คลาวด์กับ Ubuntu
- ลงทะเบียนบน GitHub
- เรียนรู้ไวยากรณ์ JavaScript พื้นฐาน
- อ่านบทความภาษาอังกฤษและรัสเซียมากมาย
- ในที่สุดก็สร้างบอท
- ในที่สุดฉันก็เขียนบทความนี้
ผลลัพธ์สุดท้ายมีลักษณะดังนี้:
ฉันจะบอกทันทีว่านี่เป็นบทความสำหรับผู้เริ่มต้น - เพียงเพื่อทำความเข้าใจวิธีทำสิ่งพื้นฐานตั้งแต่เริ่มต้น
และสำหรับโปรแกรมเมอร์ขั้นสูงเพียงเพื่อทำให้พวกเขาหัวเราะเล็กน้อย
1. จะเขียนโค้ดใน JS ได้อย่างไร?
ฉันเข้าใจว่าอย่างน้อยมันก็คุ้มค่าที่จะเข้าใจไวยากรณ์ของภาษาก่อน ตัวเลือกตกอยู่กับ JavaScript เพียงเพราะขั้นตอนต่อไปสำหรับฉันคือการสร้างแอปพลิเคชันใน ReactNative ฉันเริ่มต้นด้วย
2. จะลงทะเบียนบอทได้อย่างไร?
สิ่งนี้ช่วยฉันได้มากในตอนแรก
3. รหัสบอทมีลักษณะอย่างไร?
หลังจากศึกษาบทความมาเป็นเวลานาน ฉันก็พบว่าการใช้ไลบรารีบางประเภท (โค้ดของบุคคลที่สามในรูปแบบโมดูล) ก็คุ้มค่า เพื่อที่จะได้ไม่ต้องกังวลกับการศึกษา Telegram API และสร้างโค้ดขนาดใหญ่ตั้งแต่ต้น ฉันพบกรอบแล้ว
3. วิธีสร้างเซิร์ฟเวอร์คลาวด์ของคุณเองในราคา 100 รูเบิล
หลังจากค้นหามาหลายครั้ง ฉันพบว่าคำสั่ง 'npm' ในภาพด้านบนหมายถึงบรรทัดคำสั่ง บรรทัดคำสั่งมีอยู่ทุกที่ แต่เพื่อให้สามารถดำเนินการได้ คุณต้องติดตั้ง NodePackageManager ปัญหาคือว่าฉันกำลังเขียนโปรแกรมบน PixelBook ด้วย ChromeOS ฉันจะข้ามบล็อกขนาดใหญ่เกี่ยวกับวิธีที่ฉันเรียนรู้ Linux ที่นี่ - ส่วนใหญ่ว่างเปล่าและไม่จำเป็น หากคุณมี Windows หรือ MacBook แสดงว่าคุณมีคอนโซลอยู่แล้ว
โดยสรุป ฉันติดตั้ง Linux ผ่าน Crostini
อย่างไรก็ตาม ในกระบวนการนี้ ฉันตระหนักว่าเพื่อให้บอททำงานอย่างต่อเนื่อง (และไม่ใช่แค่เมื่อคอมพิวเตอร์ของฉันเปิดอยู่) ฉันจำเป็นต้องมีเซิร์ฟเวอร์คลาวด์ ฉันเลือก
4. วิธีเตรียมเซิร์ฟเวอร์เพื่อรันบอท
หลังจากนั้นฉันก็รู้ว่าฉันต้องสร้างโฟลเดอร์บางประเภทบนเซิร์ฟเวอร์โดยฉันจะใส่ไฟล์พร้อมข้อความโค้ด ในการทำเช่นนี้ในคอนโซล (เรียกใช้บนเว็บไซต์โดยตรงผ่านปุ่ม "เปิดคอนโซล") ฉันเข้าไป
mkdir bot
บอท - นี่คือชื่อโฟลเดอร์ของฉัน หลังจากนั้น ฉันติดตั้ง npm และ Node.js ซึ่งจะทำให้ฉันสามารถเรียกใช้โค้ดจากไฟล์ที่มีความละเอียด *.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
ฉันขอแนะนำอย่างยิ่งให้ตั้งค่าการเชื่อมต่อกับเซิร์ฟเวอร์ผ่านคอนโซลของคุณในขั้นตอนนี้ ที่นี่
5. วิธีเขียนโค้ดสำหรับบอทตัวแรกของคุณ
แต่ตอนนี้มันเป็นเพียงการค้นพบสำหรับฉัน โปรแกรมใดๆ ก็เป็นเพียงบรรทัดข้อความ สามารถแทรกได้ทุกที่ บันทึกด้วยส่วนขยายที่ต้องการ เท่านี้ก็เรียบร้อย คุณช่างงดงาม. ฉันใช้
ฉันสร้างไฟล์ใหม่ โดยใส่โค้ดจากตัวอย่างในหน้าโทรเลขและบันทึกไว้ในไฟล์ index.js (โดยทั่วไปแล้ว ไม่จำเป็นต้องตั้งชื่อไฟล์ในลักษณะนั้น แต่เป็นเรื่องปกติ) สำคัญ - แทนที่จะใส่ BOT_TOKEN ให้ใส่คีย์ API ของคุณจากย่อหน้าที่สอง
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()
6. วิธีอัพโหลดโค้ดขึ้นเซิร์ฟเวอร์ผ่าน GitHub
ตอนนี้ฉันต้องอัปโหลดโค้ดนี้ไปยังเซิร์ฟเวอร์และเรียกใช้งาน นี่กลายเป็นความท้าทายสำหรับฉัน หลังจากผ่านความยากลำบากมามาก ฉันพบว่าการสร้างไฟล์บน github จะง่ายกว่าซึ่งช่วยให้คุณอัปเดตโค้ดโดยใช้คำสั่งในคอนโซลได้ ฉันลงทะเบียนบัญชีเมื่อวันที่
7. วิธีอัพโหลดไฟล์ขึ้นเซิร์ฟเวอร์ผ่าน GitHub ตอนที่ 2
ฉันจำเป็นต้องติดตั้งโปรแกรมบนเซิร์ฟเวอร์ที่จะดาวน์โหลดไฟล์จาก git ฉันติดตั้ง git บนเซิร์ฟเวอร์โดยพิมพ์ลงในคอนโซล
apt-get install git
หลังจากนั้นฉันต้องกำหนดค่าการอัพโหลดไฟล์ เมื่อต้องการทำสิ่งนี้ ฉันพิมพ์ลงในบรรทัดคำสั่ง
git clone git://github.com/b0tank/bot.git bot
เป็นผลให้ทุกอย่างจากโปรเจ็กต์ถูกอัพโหลดไปยังเซิร์ฟเวอร์ ข้อผิดพลาดในขั้นตอนนี้คือฉันสร้างโฟลเดอร์ที่สองภายในโฟลเดอร์บอทที่มีอยู่แล้ว ที่อยู่ของไฟล์ดูเหมือน */bot/bot/index.js
ฉันตัดสินใจที่จะเพิกเฉยต่อปัญหานี้
และหากต้องการโหลดไลบรารี telegraf ที่เราร้องขอในโค้ดบรรทัดแรก ให้พิมพ์คำสั่งลงในคอนโซล
npm install telegraf
8. วิธีเปิดบอท
ในการดำเนินการนี้ขณะอยู่ในโฟลเดอร์ที่มีไฟล์ (หากต้องการย้ายจากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่งผ่านคอนโซล ให้รันคำสั่ง format cd bot
เพื่อให้แน่ใจว่าคุณอยู่ในที่ที่คุณต้องการ คุณสามารถป้อนคำสั่งที่จะแสดงไฟล์และโฟลเดอร์ทั้งหมดที่มีอยู่ในคอนโซล ls -a
ในการเริ่มต้นฉันเข้าสู่คอนโซล
node index.js
หากไม่มีข้อผิดพลาด ทุกอย่างเรียบร้อยดี บอทกำลังทำงานอยู่ มองหาเขาทางโทรเลข หากมีข้อผิดพลาดให้นำความรู้ของคุณไปประยุกต์ใช้จากข้อ 1
9. วิธีรันบอทในเบื้องหลัง
คุณจะรู้ได้อย่างรวดเร็วว่าบอทจะทำงานเฉพาะเมื่อคุณนั่งอยู่ในคอนโซลเท่านั้น เพื่อแก้ไขปัญหานี้ฉันใช้คำสั่ง
screen
หลังจากนี้จะมีหน้าจอพร้อมข้อความปรากฏขึ้น ซึ่งหมายความว่าทุกอย่างเรียบร้อยดี คุณอยู่บนเซิร์ฟเวอร์เสมือนบนเซิร์ฟเวอร์คลาวด์ เพื่อทำความเข้าใจให้ดีขึ้นว่ามันทำงานอย่างไร -
node index.js
10. บอททำงานอย่างไร และจะขยายฟังก์ชันการทำงานอย่างไร
บอทตัวอย่างของเราทำอะไรได้บ้าง? เขาสามารถ
bot.start((ctx) => ctx.reply('Welcome!'))
พูดว่า "ยินดีต้อนรับ!" ในขณะที่เริ่มต้น (ลองเปลี่ยนข้อความ)
bot.help((ctx) => ctx.reply('Send me a sticker'))
เพื่อตอบสนองต่อคำสั่งมาตรฐาน /help ให้ส่งข้อความ “ส่งสติ๊กเกอร์ให้ฉัน”
bot.on('sticker', (ctx) => ctx.reply(''))
ส่งการอนุมัติเพื่อตอบกลับสติกเกอร์
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
ตอบว่า “สวัสดี” หากพวกเขาเขียนว่า “สวัสดี” ถึงเขา
bot.launch()
ถ้าดูโค้ดที่ ctx.replyWithPhoto
ช่วยให้คุณสามารถส่งรูปภาพหรือ GIF ที่ระบุเพื่อตอบสนองต่อข้อความเฉพาะ
ส่วนสำคัญของโค้ดนี้เขียนโดยเด็กอายุ 11-13 ปี ซึ่งฉันอนุญาตให้เข้าถึงบอทได้ พวกเขาเข้าสู่กรณีผู้ใช้ของพวกเขา ฉันคิดว่ามันง่ายที่จะบอกได้ว่าส่วนไหนทำโดยพวกเขา
เช่น ข้อความ “เจค” จะได้รับ GIF พร้อมตัวละครชื่อดังจากการ์ตูนเรื่อง Adventure Time
เพื่อพัฒนาบอทเพิ่มเติม คุณต้องเชื่อมต่อคีย์บอร์ด ดูตัวอย่าง เช่น
11. วิธีอัพเดตโค้ดและรีสตาร์ทบอท
อย่าลืมว่าคุณต้องอัปเดตโค้ดไม่เพียงแต่บน github เท่านั้น แต่ยังบนเซิร์ฟเวอร์ด้วย ทำได้ง่ายๆ - หยุดบอท (กด ctrl+c)
- เข้าสู่คอนโซลขณะอยู่ในโฟลเดอร์เป้าหมาย git pull
— เราเปิดบอทอีกครั้งด้วยคำสั่ง node index.js
END
หลายๆ สิ่งที่อธิบายไว้ในไฟล์นี้จะเห็นได้ชัดเจนมากสำหรับโปรแกรมเมอร์ขั้นสูง อย่างไรก็ตาม เมื่อตัวฉันเองพยายามที่จะกระโดดข้ามช่องว่างไปยังโลกของบอทในคราวเดียว ฉันก็พลาดคำแนะนำดังกล่าวไปจริงๆ คู่มือที่ไม่พลาดสิ่งที่ชัดเจนและเรียบง่ายสำหรับผู้เชี่ยวชาญด้านไอที
ในอนาคต ฉันกำลังวางแผนโพสต์เกี่ยวกับวิธีการสร้างแอปพลิเคชันแรกของคุณบน ReactNative ในรูปแบบเดียวกัน สมัครสมาชิก!
ที่มา: will.com