สร้างบอท Telegram ใน Yandex.Cloud

สร้างบอท Telegram ใน Yandex.Cloud

วันนี้เราจะรวบรวมจากวัสดุที่ได้รับการดัดแปลง Yandex.Cloud บอทโทรเลข กับ ฟังก์ชั่นยานเดกซ์คลาวด์ (หรือ ฟังก์ชันยานเดกซ์ เพื่อความกระชับ) และ ที่เก็บวัตถุยานเดกซ์ (หรือ การจัดเก็บวัตถุ -เพื่อความชัดเจน). รหัสจะเปิดอยู่ Node.js. อย่างไรก็ตาม มีเหตุการณ์หนึ่งที่น่าสนใจ - องค์กรบางแห่งเรียกว่า RossKomเซ็นเซอร์ (ห้ามเซ็นเซอร์โดยมาตรา 29 ของรัฐธรรมนูญแห่งสหพันธรัฐรัสเซีย) ไม่อนุญาตให้ผู้ให้บริการอินเทอร์เน็ตในรัสเซียโอนคำขอไปยัง API โทรเลข ตามมา: https://api.telegram.org/. เราจะไม่ - ไม่ไม่ แน่นอนในกระเป๋าของเรามีสิ่งที่เรียกว่า เว็บฮุค - ด้วยความช่วยเหลือของพวกเขา เราไม่ได้ส่งคำขอไปยังที่อยู่เฉพาะ แต่ส่งคำขอของเราเป็นการตอบสนองต่อคำขอใด ๆ ที่ส่งถึงเราเท่านั้น นั่นคือในโอเดสซา - เราตอบคำถามด้วยคำถาม นั่นเป็นเหตุผล API โทรเลข จะไม่ปรากฏในรหัสของเรา

ข้อจำกัดความรับผิดชอบชื่อขององค์กรของรัฐใด ๆ ที่กล่าวถึงในบทความนี้เป็นเรื่องสมมติ และความบังเอิญที่เป็นไปได้กับชื่อขององค์กรในชีวิตจริงนั้นเป็นเรื่องบังเอิญ

ดังนั้นเราจะสร้างบอทที่จะจัดหาความคิดที่ชาญฉลาดให้กับเรา เหมือนในภาพ:

สร้างบอท Telegram ใน Yandex.Cloud

คุณสามารถลองใช้งานได้จริง - นี่คือชื่อ: @SmartThoughtsBot. สังเกตปุ่ม "ทักษะของอลิซ"? นี่เป็นเพราะบอทเป็น "คู่หู" ชนิดหนึ่งสำหรับบาร์นี้ ทักษะของอลิซ, เช่น. มันทำหน้าที่เดียวกันกับ ทักษะของอลิซ และบางทีพวกเขาสามารถอยู่ร่วมกันอย่างสงบสุขได้ เกี่ยวกับวิธีการสร้าง ทักษะการคิดอย่างชาญฉลาด อธิบายไว้ในบทความ อลิซได้รับทักษะ. ตอนนี้ (หลังจากทำการเปลี่ยนแปลงบางอย่างหลังจากการเผยแพร่บทความข้างต้น) บนสมาร์ทโฟนนี้ ความสามารถ จะมีลักษณะดังนี้:

สร้างบอท Telegram ใน Yandex.Cloud

การสร้างบอท

ฉันต้องการให้บทช่วยสอนนี้เป็นประโยชน์กับทุกคนรวมถึง และ "ผู้สร้างบอท" มือใหม่ ดังนั้นในส่วนนี้ฉันจะอธิบายรายละเอียดวิธีการสร้างโดยทั่วไปใน Telegramอีบอท สำหรับผู้ที่ไม่ต้องการข้อมูลนี้ ให้ดำเนินการในส่วนถัดไป

เปิดแอปพลิเคชั่น เทเลการัมเราเรียกว่าพ่อของบอททั้งหมด (พวกมันมีทุกอย่างเหมือนคน) - @บอทพ่อ - และเริ่มต้นด้วยเราจะให้คำสั่ง / ช่วยแก่เขาเพื่อรีเฟรชความทรงจำของเราว่าเราทำอะไรได้บ้าง ตอนนี้เราสนใจทีม / newbot.

สร้างบอท Telegram ใน Yandex.Cloud

เนื่องจากบอทที่อธิบายไว้ที่นี่ถูกสร้างขึ้นแล้ว เพื่อวัตถุประสงค์ในการสาธิต ฉันจะสร้างบอทอีกตัวในช่วงเวลาสั้นๆ (จากนั้นฉันจะลบทิ้ง) ฉันจะโทรหาเขา การสาธิต HabrBot. ชื่อ (ชื่อผู้ใช้) บอทโทรเลขทั้งหมดต้องลงท้ายด้วยคำ ปากกระบอกปืนตัวอย่างเช่น: มายคูลบอต หรือ my_cool_bot นี่สำหรับบอท แต่ก่อนอื่น ให้ตั้งชื่อบอท (ชื่อ) สำหรับคน ชื่อสามารถเป็นภาษาใดก็ได้ มีช่องว่าง ไม่ต้องลงท้ายด้วยคำ ปากกระบอกปืนและไม่จำเป็นต้องซ้ำใครด้วยซ้ำ ในตัวอย่างนี้ ผมเรียกบอทนี้ว่า เดโม Habr.

สร้างบอท Telegram ใน Yandex.Cloud

ตอนนี้เลือกชื่อสำหรับบอท (ชื่อผู้ใช้อันหนึ่งสำหรับบอท) ขอเรียกมันว่า การสาธิต HabrBot. ทุกอย่างที่เกี่ยวข้องกับชื่อของบอท (ชื่อ) ไม่เกี่ยวข้องกับชื่อของเขาเลย - ชื่อผู้ใช้ (หรือนำไปใช้แต่ตรงกันข้าม) หลังจากสร้างชื่อบอทเฉพาะสำเร็จแล้ว เราต้องคัดลอกและบันทึก (อย่างมั่นใจที่สุด!) โทเค็นที่แสดงในภาพหน้าจอด้วยลูกศรสีแดง ด้วยความช่วยเหลือเราจะติดตั้งขาออกในภายหลัง Telegram'เว็บฮุคของเรา ฟังก์ชันยานเดกซ์.

สร้างบอท Telegram ใน Yandex.Cloud

และตอนนี้เราจะให้คำสั่งกับพ่อของบอททั้งหมด: /มายบอทและจะแสดงรายการบอททั้งหมดที่เราสร้าง ปล่อยให้บอทที่เพิ่งอบใหม่อยู่คนเดียวในตอนนี้ เดโม Habr (มันถูกสร้างขึ้นเพื่อแสดงวิธีการสร้างบอท แต่เราจะใช้มันในวันนี้เพื่อวัตถุประสงค์ในการสาธิตอื่นๆ) และพิจารณาบอท ความคิดที่ชาญฉลาด (@SmartThoughtsBot). คลิกปุ่มที่มีชื่อในรายการบอท

สร้างบอท Telegram ใน Yandex.Cloud

นี่คือที่ที่เราสามารถตั้งค่าบอทของเราได้ กดปุ่ม แก้ไข ... เราจะดำเนินการแก้ไขตัวเลือกใดตัวเลือกหนึ่ง ตัวอย่างเช่น โดยคลิกที่ปุ่ม แก้ไขชื่อ เราสามารถเปลี่ยนชื่อบอตพูดแทน ความคิดที่ชาญฉลาด, เขียน ไอเดียบ้าๆ. บอทพิค - นี่คืออวาตาร์ของบอท อย่างน้อยต้องเป็น 150 x 150 px. รายละเอียด เป็นคำอธิบายสั้น ๆ ที่ผู้ใช้เห็นเมื่อเปิดบอทเป็นครั้งแรก เพื่อตอบคำถาม: บอทนี้ทำอะไรได้บ้าง? เกี่ยวกับเรา - คำอธิบายที่สั้นกว่าซึ่งส่งพร้อมลิงก์ไปยังบอท (https://t.me/SmartThoughtsBot) หรือเมื่อดูข้อมูลเกี่ยวกับมัน

สร้างบอท Telegram ใน Yandex.Cloud

เราก็ต้องตั้งค่าคำสั่ง ในการทำเช่นนี้ให้กดปุ่ม แก้ไขคำสั่ง. เพื่อสร้างมาตรฐานการปฏิบัติของผู้ใช้ Telegram แนะนำให้ใช้สองคำสั่งเสมอ: / start и /ช่วยด้วยและถ้าบอทต้องการการตั้งค่า - คำสั่งเพิ่มเติม /settings บอทของเราเรียบง่ายเหมือนลูกบอล ดังนั้นจึงไม่จำเป็นต้องตั้งค่าใดๆ เราเขียนสองคำสั่งแรกซึ่งเราจะดำเนินการในรหัส ตอนนี้ หากผู้ใช้ป้อนเครื่องหมายทับ (เครื่องหมายทับ : /) ในช่องป้อนข้อมูล รายการคำสั่งจะปรากฏขึ้นสำหรับการเลือกอย่างรวดเร็ว ทุกอย่างเป็นไปตามภาพ: ด้านซ้าย - เราตั้งค่าคำสั่งผ่านบอทพ่อ ทางด้านขวา คำสั่งเหล่านี้พร้อมใช้งานสำหรับผู้ใช้ในบอทของเราแล้ว

สร้างบอท Telegram ใน Yandex.Cloud

ฟังก์ชันยานเดกซ์

ตอนนี้บอทของเราถูกสร้างขึ้นแล้ว ไปที่ Yandex.Cloudเพื่อสร้างฟังก์ชั่นที่จะรันโค้ดบอทของเรา หากคุณยังไม่เคยร่วมงานกับ Yandex.Cloud อ่านเนื้อหา อลิซในดินแดนแห่ง Bitrixและจากนั้น - ฟังก์ชัน Yandex ส่งจดหมาย. ฉันเกือบจะแน่ใจว่าบทความที่ค่อนข้างเล็กทั้งสองนี้จะเพียงพอสำหรับคุณในการทำความเข้าใจพื้นฐานของหัวข้อนี้

ดังนั้นในคอนโซล Yandex.Clouds ในเมนูนำทางด้านซ้าย ให้เลือกรายการ ฟังก์ชันคลาวด์แล้วกดปุ่ม สร้างฟังก์ชัน. เราตั้งชื่อและเพื่อตัวเราเอง - คำอธิบายสั้น ๆ

สร้างบอท Telegram ใน Yandex.Cloud

หลังจากกดปุ่ม สร้าง และหลังจากนั้นไม่กี่วินาที ฟังก์ชันใหม่จะปรากฏในรายการฟังก์ชันทั้งหมด คลิกที่ชื่อของเธอ - นี่จะนำเราไปที่หน้า ทบทวน ฟังก์ชั่นของเรา ที่นี่คุณต้องเปิดใช้งานOn) สวิตช์ ฟังก์ชั่นสาธารณะเพื่อให้ใช้งานได้จากภายนอก (สำหรับ Yandex.Clouds) ของโลกและมูลค่าของทุ่งนา ลิงค์โทร и ระบุ - เก็บไว้เป็นความลับจากทุกคนยกเว้นตัวคุณเองและ Telegram เพื่อให้นักต้มตุ๋นหลายคนไม่สามารถเรียกใช้ฟังก์ชันของคุณได้

สร้างบอท Telegram ใน Yandex.Cloud

ตอนนี้ใช้เมนูด้านซ้ายไปที่ บรรณาธิการ ฟังก์ชั่น. ให้เราพักสักครู่ของเรา ความคิดที่ชาญฉลาดและสร้างฟังก์ชันเทมเพลตขั้นต่ำเพื่อตรวจสอบประสิทธิภาพของบอทของเรา... อย่างไรก็ตาม ในบริบทนี้ ฟังก์ชันนี้คือบอทของเรา... กล่าวโดยย่อ ตอนนี้และที่นี่ เราจะสร้างบอทง่ายๆ ที่จะ "สะท้อน" ( เช่น ส่งกลับ ) คำขอของผู้ใช้ เทมเพลตนี้สามารถใช้ได้เสมอเมื่อสร้างบอทโทรเลขใหม่เพื่อให้แน่ใจว่าการสื่อสารด้วย โทรเลข'โอมทำงานได้ดี คลิก สร้างไฟล์โทรเลย index.jsและออนไลน์ โปรแกรมแก้ไขโค้ด วางรหัสต่อไปนี้ลงในไฟล์นี้:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

ในคอนโซล Yandex.Cloud ควรมีลักษณะดังนี้:

สร้างบอท Telegram ใน Yandex.Cloud

ด้านล่างเราระบุ จุดเริ่มต้น - index.botที่ไหน ดัชนี นี่คือชื่อไฟล์ (index.js) และ ปากกระบอกปืน - ชื่อฟังก์ชัน (โมดูล.exports.bot). ปล่อยให้ฟิลด์อื่นทั้งหมด "ตามสภาพ" และที่มุมขวาบนให้คลิกปุ่ม สร้างเวอร์ชัน. หลังจากนั้นไม่กี่วินาที ฟังก์ชันเวอร์ชันนี้จะถูกสร้างขึ้น หลังจากการทดสอบไม่นาน เว็บฮุคเราจะสร้างเวอร์ชันใหม่ - ความคิดที่ชาญฉลาด.

สร้างบอท Telegram ใน Yandex.Cloud

การจัดเก็บวัตถุ

ตอนนี้เราได้ตั้งค่าแล้ว ฟังก์ชันยานเดกซ์ไปกันเถอะในขณะที่เราอยู่ในคอนโซล Yandex.Clouds, สร้างสิ่งที่เรียกว่า. ถัง (ถัง, เช่น. ถังในภาษารัสเซียไม่ใช่ช่อ) สำหรับจัดเก็บไฟล์รูปภาพที่จะใช้ในบอทของเรา ความคิดที่ชาญฉลาด. เลือกจากเมนูนำทางด้านซ้าย การจัดเก็บวัตถุ, กดปุ่ม สร้างถังตั้งชื่อให้ เช่น img-ถังและที่สำคัญที่สุดคือ อ่านการเข้าถึงวัตถุ ทำให้เป็นสาธารณะ - มิฉะนั้น Telegram จะไม่เห็นรูปภาพของเรา ช่องอื่นๆ ทั้งหมดจะไม่เปลี่ยนแปลง เรากดปุ่ม สร้างถัง.

สร้างบอท Telegram ใน Yandex.Cloud

หลังจากนั้น รายการที่เก็บข้อมูลทั้งหมดอาจมีลักษณะดังนี้ (หากเป็นเพียงที่เก็บข้อมูลเดียวของคุณ):

สร้างบอท Telegram ใน Yandex.Cloud

ตอนนี้ฉันเสนอที่จะคลิกที่ชื่อของที่ฝากข้อมูลและภายในนั้นสร้างโฟลเดอร์เพื่อจัดระเบียบการจัดเก็บรูปภาพสำหรับแอปพลิเคชันต่างๆ ตัวอย่างเช่น สำหรับบอตโทรเลข ความคิดที่ชาญฉลาด ฉันสร้างโฟลเดอร์ชื่อ tg-bot-ความคิดที่ชาญฉลาด (ไม่มีอะไรฉันจะเข้าใจรหัสนี้) สร้างหนึ่งเกินไป

สร้างบอท Telegram ใน Yandex.Cloud

ตอนนี้คุณสามารถคลิกที่ชื่อโฟลเดอร์ เข้าไปข้างในแล้วอัพโหลดไฟล์:

สร้างบอท Telegram ใน Yandex.Cloud

และคลิกที่ชื่อไฟล์ - รับเลย URL สำหรับใช้ในบอทของเราและโดยทั่วไป - ทุกที่ (แต่อย่าเผยแพร่สิ่งนี้ URL โดยไม่จำเป็นเนื่องจากการรับส่งข้อมูลจาก ที่เก็บวัตถุ เรียกเก็บเงิน)

สร้างบอท Telegram ใน Yandex.Cloud

ในความเป็นจริงนั่นคือทั้งหมด ที่เก็บวัตถุ. ตอนนี้คุณจะรู้ว่าต้องทำอย่างไรเมื่อเห็นข้อความแจ้งให้อัปโหลดไฟล์ที่นั่น

เว็บฮุค

ตอนนี้เราจะติดตั้ง เว็บฮุค - เช่น. เมื่อบอทได้รับการอัปเดต (เช่น ข้อความจากผู้ใช้) จากเซิร์ฟเวอร์ Telegram ของเรา ฟังก์ชันยานเดกซ์ คำขอจะถูกส่งขอ) กับข้อมูล นี่คือสตริงที่คุณสามารถวางในช่องที่อยู่ของเบราว์เซอร์ จากนั้นรีเฟรชหน้า (ต้องทำเพียงครั้งเดียว): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
เพียงแค่แทนที่ {bot_token} โทเค็นที่เราได้รับจากบอทพ่อเมื่อสร้างบอทของเราและ {เว็บฮุค_url} - บน URL ของเรา ฟังก์ชันยานเดกซ์. รอสักครู่! แต่ RossKomเซ็นเซอร์ ห้ามผู้ให้บริการในสหพันธรัฐรัสเซียให้บริการที่อยู่ https://api.telegram.org. ถูกต้องเลย. แต่คุณสามารถคิดอะไรบางอย่างได้ ท้ายที่สุด คุณสามารถถามคุณยายของคุณเกี่ยวกับเรื่องนี้ได้ในยูเครน อิสราเอล หรือแคนาดา - ไม่มี "การเซ็นเซอร์ของรัสเซีย" ที่นั่น และมีเพียงพระเจ้าเท่านั้นที่รู้ว่าผู้คนอยู่โดยไม่มีมันได้อย่างไร ดังนั้น การตอบกลับคำขอเมื่อติดตั้งเว็บฮุคควรมีลักษณะดังนี้:

สร้างบอท Telegram ใน Yandex.Cloud

การทดสอบ ควรส่องกระจก

สร้างบอท Telegram ใน Yandex.Cloud

นี่เป็นเรื่องจริง ขอแสดงความยินดี - ตอนนี้ ฟังก์ชันยานเดกซ์ ได้กลายเป็น Telegram-บอท!

ความคิดที่ชาญฉลาด

และตอนนี้เราทำ Smart Thoughts รหัสเปิดอยู่และอยู่บน GitHub. เป็นความคิดเห็นที่ค่อนข้างดีและมีความยาวเพียงร้อยบรรทัดเท่านั้น อ่านมันเหมือนบทนักร้องโอเปร่า!

สร้างบอท Telegram ใน Yandex.Cloud

โคลนโครงการและติดตั้งการอ้างอิง:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

ทำการเปลี่ยนแปลงที่คุณต้องการในไฟล์ index.js (ไม่บังคับ คุณไม่สามารถเปลี่ยนแปลงอะไรได้) สร้าง ไปรษณีย์- เก็บถาวรด้วยไฟล์ index.js และโฟลเดอร์ node_modules ภายใน เช่น ก็เรียก smart.zip.

สร้างบอท Telegram ใน Yandex.Cloud

ตอนนี้ไปที่คอนโซลของเรา ฟังก์ชันยานเดกซ์, เลือกแท็บ ไฟล์ ZIP, กดปุ่ม เลือกไฟล์และดาวน์โหลดไฟล์เก็บถาวรของเรา smart.zip. สุดท้ายที่มุมขวาบน ให้คลิกปุ่ม สร้างเวอร์ชัน.

สร้างบอท Telegram ใน Yandex.Cloud

ในไม่กี่วินาที เมื่อฟังก์ชันได้รับการอัปเดต เราจะทดสอบบอทของเราอีกครั้ง ตอนนี้เขาไม่ "สะท้อน" อีกต่อไป แต่ให้ความคิดที่ชาญฉลาด!

สร้างบอท Telegram ใน Yandex.Cloud

นั่นคือทั้งหมดสำหรับวันนี้ บทความอื่นๆ ตามมา หากคุณสนใจที่จะอ่านสิ่งนี้ สมัครรับการแจ้งเตือนบทความใหม่ คุณสามารถสมัครได้ที่นี่หรือ Telegram-ช่อง สอนไอที Zakharหรือ Twitter @ไมค์ซาฮารอฟ.

การอ้างอิง

รหัสบน GitHub
ฟังก์ชั่นยานเดกซ์คลาวด์
ที่เก็บวัตถุยานเดกซ์
บอท: บทนำสำหรับนักพัฒนา
API บอทโทรเลข

โดนาติ

สร้างบอท Telegram ใน Yandex.Cloud

ที่มา: will.com

เพิ่มความคิดเห็น