Tôi bắt đầu đắm mình vào thế giới CNTT chỉ ba tuần trước. Nghiêm túc mà nói, ba tuần trước, tôi thậm chí còn không hiểu cú pháp HTML và phần giới thiệu về ngôn ngữ lập trình của tôi đã kết thúc bằng chương trình giảng dạy ở trường về Pascal từ 10 năm trước. Tuy nhiên, tôi quyết định tham gia trại CNTT, nơi sẽ rất thú vị cho trẻ em làm robot. Tôi quyết định rằng việc đó khó đến thế.
Điều này bắt đầu một cuộc hành trình dài trong đó tôi:
- đã triển khai máy chủ đám mây với Ubuntu,
- đã đăng ký trên GitHub,
- đã học cú pháp JavaScript cơ bản,
- đọc rất nhiều bài báo bằng tiếng Anh và tiếng Nga,
- cuối cùng đã tạo ra một con robot,
- Cuối cùng tôi đã viết bài viết này.
Kết quả cuối cùng trông giống như thế này:
Tôi sẽ nói ngay rằng đây là bài viết dành cho người mới bắt đầu - chỉ để hiểu cách làm những việc cơ bản từ đầu.
Và ngoài ra - đối với những lập trình viên cao cấp - chỉ để làm họ cười một chút.
1. Viết code trong JS như thế nào?
Tôi hiểu rằng ít nhất việc hiểu cú pháp của ngôn ngữ trước tiên cũng đáng giá. Lựa chọn thuộc về JavaScript, đơn giản vì bước tiếp theo đối với tôi là tạo một ứng dụng trong ReactNative. tôi bắt đầu với
2. Làm thế nào để đăng ký bot?
Điều này đã giúp tôi rất nhiều trong thời gian đầu
3. Mã bot trông như thế nào?
Sau khi nghiên cứu các bài viết một thời gian dài, tôi nhận ra rằng nên sử dụng một số loại thư viện (mã của bên thứ ba ở định dạng mô-đun) để không phải lo lắng về việc nghiên cứu API Telegram và tạo các đoạn mã lớn từ đầu. Tôi đã tìm thấy khuôn khổ
3. Cách tạo máy chủ đám mây của riêng bạn với giá 100 rúp
Sau rất nhiều lần tìm kiếm, tôi nhận ra rằng lệnh 'npm' trong hình trên đề cập đến dòng lệnh. Dòng lệnh có ở khắp mọi nơi, nhưng để có thể thực thi nó, bạn cần cài đặt NodePackageManager. Vấn đề là tôi đang lập trình trên PixelBook với ChromeOS. Ở đây tôi sẽ bỏ qua phần lớn về cách tôi học Linux - đối với hầu hết nó trống rỗng và không cần thiết. Nếu bạn có Windows hoặc MacBook, bạn đã có bảng điều khiển.
Tóm lại, tôi đã cài đặt Linux qua Crostini.
Tuy nhiên, trong quá trình đó, tôi nhận ra rằng để bot hoạt động liên tục (và không chỉ khi máy tính của tôi bật), tôi cần có một máy chủ đám mây. Tôi chọn
4. Cách chuẩn bị máy chủ chạy bot
Sau đó, tôi nhận ra rằng tôi cần tạo một loại thư mục nào đó trên máy chủ để tôi đặt tệp có văn bản mã. Để thực hiện việc này, trong bảng điều khiển (chạy trực tiếp trên trang web thông qua nút “Mở bảng điều khiển”), tôi đã nhập
mkdir bot
bot - đây đã trở thành tên thư mục của tôi. Sau đó, tôi đã cài đặt npm và Node.js, điều này sẽ cho phép tôi chạy mã từ các tệp có độ phân giải *.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
Tôi thực sự khuyên bạn nên thiết lập kết nối với máy chủ thông qua bảng điều khiển của mình ở giai đoạn này. Đây
5. Cách viết mã cho bot đầu tiên của bạn.
Nhưng bây giờ nó chỉ là một khám phá đối với tôi. Bất kỳ chương trình nào cũng chỉ là những dòng văn bản. Chúng có thể được chèn vào bất cứ đâu, được lưu với phần mở rộng mong muốn và thế là xong. Bạn thật đẹp. tôi đã sử dụng
Tôi đã tạo một tệp mới, trong đó tôi đã chèn mã từ ví dụ trên trang telegraf và lưu nó vào tệp index.js (nói chung không cần thiết phải đặt tên tệp theo cách đó, nhưng đây là thông lệ). Quan trọng - thay vì BOT_TOKEN, hãy chèn khóa API của bạn từ đoạn thứ hai.
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. Cách upload code lên server qua github
Bây giờ tôi cần bằng cách nào đó tải mã này lên máy chủ và chạy nó. Điều này trở thành một thử thách đối với tôi. Kết quả là, sau nhiều thử thách, tôi nhận ra rằng việc tạo một tệp trên github cho phép bạn cập nhật mã bằng lệnh trong bảng điều khiển sẽ dễ dàng hơn. Tôi đã đăng ký một tài khoản trên
7. Cách upload file lên server qua github phần 2
Tôi cần cài đặt một chương trình trên máy chủ để tải xuống các tệp từ git. Tôi đã cài đặt git trên máy chủ bằng cách gõ vào bảng điều khiển
apt-get install git
Sau đó tôi cần cấu hình tải lên tập tin. Để làm điều này, tôi gõ vào dòng lệnh
git clone git://github.com/b0tank/bot.git bot
Kết quả là mọi thứ từ dự án đã được tải lên máy chủ. Sai lầm ở giai đoạn này là về cơ bản tôi đã tạo một thư mục thứ hai bên trong thư mục bot hiện có. Địa chỉ của tệp có dạng */bot/bot/index.js
Tôi quyết định bỏ qua vấn đề này.
Và để tải thư viện telegraf mà chúng tôi yêu cầu trong dòng mã đầu tiên, hãy nhập lệnh vào bảng điều khiển.
npm install telegraf
8. Cách khởi chạy bot
Để thực hiện việc này, khi đang ở trong thư mục có tệp (để di chuyển từ thư mục này sang thư mục khác qua bảng điều khiển, hãy chạy lệnh định dạng cd bot
Để đảm bảo rằng bạn đang ở nơi cần đến, bạn có thể nhập lệnh sẽ hiển thị trong bảng điều khiển tất cả các tệp và thư mục ở đó ls -a
Để bắt đầu, tôi đã vào bảng điều khiển
node index.js
Nếu không có lỗi thì mọi thứ đều ổn, bot đang hoạt động. Hãy tìm anh ấy trên điện tín. Nếu có lỗi, hãy áp dụng kiến thức của bạn từ điểm 1.
9. Cách chạy bot ở chế độ nền
Rất nhanh chóng, bạn sẽ nhận ra rằng bot chỉ hoạt động khi chính bạn đang ngồi trong bảng điều khiển. Để giải quyết vấn đề này tôi đã sử dụng lệnh
screen
Sau đó, một màn hình với một số văn bản sẽ xuất hiện. Điều này có nghĩa là mọi thứ đều ổn. Bạn đang ở trên một máy chủ ảo trên máy chủ đám mây. Để hiểu rõ hơn cách thức hoạt động của nó -
node index.js
10. Cách thức hoạt động của bot và cách mở rộng chức năng của nó
Bot mẫu của chúng tôi có thể làm gì? Anh ấy có thể
bot.start((ctx) => ctx.reply('Welcome!'))
nói "Chào mừng!" tại thời điểm bắt đầu (thử thay đổi văn bản)
bot.help((ctx) => ctx.reply('Send me a sticker'))
để đáp lại lệnh /help tiêu chuẩn, hãy gửi tin nhắn “Gửi cho tôi nhãn dán”
bot.on('sticker', (ctx) => ctx.reply(''))
gửi phê duyệt để phản hồi nhãn dán
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
trả lời “Này” nếu họ viết “xin chào” với anh ấy
bot.launch()
Nếu bạn nhìn vào mã tại ctx.replyWithPhoto
Nó cho phép bạn gửi một bức ảnh hoặc gif cụ thể để đáp lại một văn bản cụ thể.
Một phần quan trọng của mã được viết bởi trẻ em từ 11-13 tuổi, những người được tôi cấp quyền truy cập vào bot. Họ đã nhập trường hợp người dùng của họ. Tôi nghĩ thật dễ dàng để biết phần nào được họ làm.
Ví dụ: tin nhắn “Jake” sẽ nhận được ảnh GIF có hình một nhân vật nổi tiếng trong phim hoạt hình Adventure Time.
Để phát triển bot hơn nữa, bạn cần kết nối bàn phím, xem ví dụ, ví dụ:
11. Cách cập nhật mã và khởi động lại bot
Đừng quên rằng bạn cần cập nhật mã không chỉ trên github mà còn trên máy chủ. Việc này rất dễ thực hiện - dừng bot (nhấn ctrl+c),
- nhập vào bảng điều khiển khi đang ở trong thư mục đích, git pull
— chúng ta khởi chạy lại bot bằng lệnh node index.js
END
Nhiều điều được mô tả trong tệp này sẽ cực kỳ rõ ràng đối với các lập trình viên cấp cao. Tuy nhiên, khi bản thân tôi cố gắng nhảy qua vực thẳm để đến thế giới bot trong một cú trượt ngã, tôi thực sự đã bỏ lỡ một hướng dẫn như vậy. Một hướng dẫn không bỏ sót những điều hiển nhiên và đơn giản đối với bất kỳ chuyên gia CNTT nào.
Trong tương lai, tôi đang lên kế hoạch đăng một bài về cách tạo ứng dụng đầu tiên của bạn trên ReactNative theo phong cách tương tự, hãy đăng ký!
Nguồn: www.habr.com