<?php wp_title('|', true, 'right'); ?>

วิธีการสร้างบอท Telegram แจ้งเตือนข้อมูลคริปโตแบบง่าย ๆ 

ติดตามสยามบล็อกเชนบนSiam Blockchain

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

ฟังก์ชันของการทำงาน

ในส่วนนี้จะแยกฟังก์ชันการทำงานหลัก สำหรับบอท Telegram ของสกุลเงินดิจิทัล ซึ่งฟีเจอร์เหล่านี้จะแสดงภาพรวมแบบเรียลไทม์เกี่ยวกับตลาดคริปโตอย่างครอบคลุมให้กับผู้ใช้งาน

  • การดึงข้อมูลแสดงข้อมูลตลาดคริปโตแบบเรียลไทม์ – บอทนี้มีอุปกรณ์พร้อม ในการดึงข้อมูลและแสดงข้อมูลสำหรับคริปโตเคอเรนซีต่างๆ แบบเรียลไทม์ ซึ่งรวมถึงข้อมูล อย่างราคาในปัจจุบัน มูลค่าตลาด ปริมาณ และเปอร์เซ็นต์การเปลี่ยนแปลงราคา ซึ่งสามารถทำได้โดยการส่งคำขอเข้าร่วม ไปยัง   /coins/markets endpoint  ของ CoinGecko API
  • การแสดงราคาสูงสุดและต่ำสุดในช่วง 24 ชั่วโมง – บอทสามารถดึงข้อมูลและแสดงราคาสูงสุดและต่ำสุดของสกุลเงินดิจิทัลเฉพาะในช่วง 24 ชั่วโมงที่ผ่านมา ซึ่งข้อมูลนี้อาจมีความสำคัญสำหรับผู้ใช้งานที่กำลังเทรดหรือตรวจสอบสกุลเงินดิจิทัลเฉพาะอยู่เป็นประจำ บอทจะดึงข้อมูลนี้จาก /coins/markets endpoint  เช่นเดียวกัน
  • การดึงข้อมูลแสดงข้อมูลอุปทาน – บอทนี้สามารถดึงข้อมูลและแสดงปริมาณอุปทานหมุนเวียน และปริมาณอุปทานทั้งหมดของสกุลเงินดิจิทัลเฉพาะ ซึ่งข้อมูลนี้อาจมีประโยชน์สำหรับผู้ใช้งานที่ต้องการทำความเข้าใจเกี่ยวกับเรื่องความขาดแคลนของสกุลเงินดิจิทัลโดยเฉพาะ ข้อมูลนี้ดึงมาจาก /coins/markets endpoint  
  • การดึงข้อมูลแสดงสกุลเงินดิจิทัลยอดนิยม  – บอทสามารถดึงข้อมูลและแสดงสกุลเงินดิจิทัล 10 อันดับแรกตามมูลค่าตลาด ซึ่งฟีเจอร์นี้ช่วยให้ผู้ใช้งานสามารถดูภาพรวมของสกุลเงินดิจิทัลชั้นนำในตลาดได้อย่างรวดเร็ว โดยการดึงข้อมูลนี้จะส่งคำขอเข้าร่วม ไปยัง  /coins/markets endpoint  เดียวกัน แต่มีพารามิเตอร์เฉพาะ เพื่อจัดลำดับผลลัพธ์ตามมูลค่าตลาดและจำกัดจำนวนของผลลัพธ์
  • การดึงข้อมูลและแสดงข้อมูล Pool ของ DEX บนเครือข่าย  – บอทนี้มีฟังก์ชันในการดึงข้อมูลและแสดงข้อมูล Pool สำหรับสภาพคล่องของคริปโตใน DEX บนเครือข่าย ซึ่งฟีเจอร์นี้ช่วยให้ผู้ใช้งานค้นหา Pool บนเครือข่าย โดยให้ข้อมูลเชิงลึกอันมีค่า เกี่ยวกับเว็บเทรดคริปโตแบบ decentralized (DEX) สามารถทำได้โดยการส่งคำขอเข้าร่วม ไปยัง/onchain/search/pools endpoint.

ข้อกำหนดการใช้งานในเบื้องต้น

ก่อนจะเริ่มใช้งาน ผู้ใช้งานควรมีสิ่งเหล่านี้:

  • ทำการติดตั้ง Python 3.7 ขึ้นไป ในระบบของคุณ ซึ่ง Python เป็นโปรแกรมภาษาที่ทรงพลังและเรียนรู้ได้ง่าย ซึ่งจะใช้เพื่อสร้างบอท
  • บัญชี Telegram ซึ่ง Telegram เป็นแอปส่งข้อความโต้ตอบแบบทันที บนระบบคลาวด์ ที่บอทของเราจะใช้งาน
  • ความเข้าใจพื้นฐานเกี่ยวกับการเขียนโปรแกรม Python แม้ว่าคู่มือนี้จะมีรายละเอียด แต่การมีความเข้าใจพื้นฐานเกี่ยวกับไวยากรณ์และแนวคิดการเขียนโปรแกรม Python ก็จะเป็นประโยชน์
  • โปรแกรมแก้ไข : คุณจะต้องมีโปรแกรมแก้ไขข้อความหรือ Integrated Development Environment (IDE) เพื่อเขียนโค้ดของคุณ โดยตัวเลือกที่นิยม ใช้ ได้แก่ Visual Studio Code, Sublime Text และ Atom
  • API ของ CoinGecko : บอทจะใช้ API ของ CoinGecko เพื่อดึงข้อมูลตลาดคริปโตสำหรับสกุลเงินดิจิทัล โดย API ของ CoinGecko จะมีแผนสาธิตฟรี ให้ผู้ใช้งานทุกคนสามารถเข้าถึงได้ โดยมีอัตราจำกัดการใช้ขั้นต่ำ 30 ครั้ง และขีดจำกัดต่อเดือนที่ 10,000 ครั้ง ผู้ที่สนใจสามารถสมัครบัญชี CoinGecko และสมัครเพื่อรับรหัส API สาธิตฟรี

ซึ่งขั้นตอนการใช้งานของการสร้างบอท Telegram สำหรับคริปโต มี 6 ขั้นตอน ดังต่อไปนี้

ขั้นตอนที่ 1: ตั้งค่า Telegram Bot ของคุณ

ขั้นแรก คุณต้องสร้างบอทใหม่บน Telegram 

  1. เปิดแอป Telegram และค้นหาบอท ‘BotFather’ ซึ่ง BotFather คือบอทตัวเดียวที่จะควบคุมบอททั้งหมด โดยจะช่วยคุณในการสร้างบอทตัวใหม่และเปลี่ยนการตั้งค่าสำหรับบอทที่มีอยู่
  2. เริ่มแชท และทำตามคำแนะนำเพื่อสร้างบอทใหม่ โดยจะต้องระบุชื่อ รวมถึงชื่อผู้ใช้งานสำหรับบอทของคุณ
  1. หลังจากสร้างบอทแล้ว ผู้ใช้งานจะได้รับโทเค็น  ซึ่งโทเค็นในที่นี้คือ “รหัสผ่าน” สำหรับบอทของคุณ ผู้ใช้งานจะต้องใช้โทเค็นนี้ ในการส่งคำขอไปยัง Telegram API  เพราะฉะนั้น ควรเก็บโทเค็นนี้ไว้ให้ปลอดภัย เนื่องจากจะถูกเอาไว้ใช้ในภายหลัง

ขั้นตอนที่ 2: การติดตั้ง Python Libraries ที่จำเป็น

เราจะใช้ Python Libraries จำนวน 2 Libraries : เป็น python-telegram-bot เพื่อใช้ในการโต้ตอบกับ Telegram API และเป็น requests ที่ใช้สำหรับส่งคำขอ HTTP ไปยัง CoinGecko API

การติดตั้งโดยใช้ pip:

ติดตั้ง pip สำหรับ python-telegram-bot , requests 

  • Python-telegram-bot เป็นไลบรารีที่ให้อินเทอร์เฟซ Python ล้วน สำหรับ Telegram Bot API ซึ่งรองรับ API 4.8 ทุกประเภท ในกระบวนการรวมถึงทำงานกับ Python 3.7 ขึ้นไป
  • requests เป็นไลบรารี HTTP ที่เรียบง่าย แต่สวยงามใน Python สร้างขึ้นสำหรับมนุษย์ ผู้ใช้งาน จะใช้ไลบรารีนี้ ทำการสร้างคำขอไปยัง CoinGecko API เพื่อดึงข้อมูลสกุลเงินดิจิทัล

ขั้นตอนที่ 3: ดึงข้อมูลสกุลเงินดิจิทัล

เราจะใช้ API ของ CoinGecko เพื่อดึงข้อมูลสกุลเงินดิจิทัล เนื่องจาก CoinGecko ได้นำเสนอการวิเคราะห์สำหรับพื้นฐานของตลาดสกุลเงินดิจิทัล นอกจากการติดตามราคา ปริมาณ และมูลค่าตลาดแล้ว CoinGecko ยังติดตามการเติบโตของชุมชน การพัฒนาโค้ด open-source , เหตุการณ์สำคัญ และเมตริกบนเชน

ขั้นตอนที่ 4: การเขียนโค้ดบอท

หลังจากที่ได้ทำการตั้งค่าบอทและติดตั้งไลบรารีเรียบร้อยแล้ว ผู้ใช้งานก็เริ่มเขียนโค้ดสำหรับบอทกันได้เลย โดยจะใช้ไลบรารี python-telegram-bot เพื่อโต้ตอบกับ Telegram API และไลบรารี requests เพื่อสร้างคำขอ HTTP ไปยัง CoinGecko API

ด้านล่างนี่คือ โค้ด Python ที่สมบูรณ์ สำหรับบอทของผู้ใช้งาน :

ขั้นตอนที่ 5: ทำความเข้าใจ โค้ดของบอท

ในส่วนนี้จะแยกโค้ด Python สำหรับ Telegram Crypto Bot ออก เพื่อทำความเข้าใจในแต่ละส่วน รวมถึงบทบาทที่สำคัญในส่วนเหล่านี้ สำหรับการทำงานโดยรวมของบอท:

  1. การนำเข้าไลบรารีและโมดูลที่จำเป็น : ขั้นตอนแรกในโค้ดคือ การนำเข้าไลบรารีและโมดูลที่จำเป็น ซึ่งได้แก่ telegram, telegram.ext และ requests โดยไลบรารีเหล่านี้ เป็นเครื่องมือที่เราต้องการใช้เพื่อโต้ตอบกับ Telegram API และส่งคำขอ HTTP ไปยัง CoinGecko API
  2. การกำหนดคีย์ API ของ CoinGecko : ต้องทำการกำหนดคีย์ API ของ CoinGecko ซึ่งใช้ในการตรวจสอบคำขอของเราไปยัง API ของ CoinGecko โดยคีย์นี้มีความสำคัญต่อการเข้าถึงข้อมูลสกุลเงินดิจิทัลที่บอทของเราจะจัดเตรียมให้
  1. การกำหนดฟังก์ชัน get_crypto_data : ฟังก์ชันนี้จะดึงข้อมูลสำหรับสกุลเงินดิจิทัลโดยเฉพาะจาก CoinGecko API โดยจะส่งคำขอเข้าร่วม ไปยัง /coins/markets endpoint ของ CoinGecko API และส่งคืนข้อมูลสำหรับสกุลเงินดิจิทัลที่ระบุ
  1. การกำหนดฟังก์ชัน get_top_cryptos : ฟังก์ชันนี้จะดึงข้อมูลของสกุลเงินดิจิทัล 10 อันดับแรกจาก CoinGecko API โดยจะส่งคำขอเข้าร่วมไปยัง /coins/markets endpoint  ของ CoinGecko API พร้อมพารามิเตอร์เฉพาะเพื่อจัดลำดับผลลัพธ์ตามมูลค่าตลาดและจำกัดจำนวนผลลัพธ์
  1. การกำหนด get_dex_pools : ฟังก์ชันนี้รับผิดชอบในการดึงข้อมูลพูล Decentralized Exchange (DEX) บนเชนจาก CoinGecko API ฟังก์ชันนี้ใช้พารามิเตอร์ 4 ตัว ได้แก่ query (ชื่อของพูล), network (เครือข่ายที่ดำเนินการอยู่), include (แอตทริบิวต์เฉพาะที่คุณต้องการรวมไว้ในการตอบกลับ) และ page (สำหรับผลลัพธ์แบบแบ่งหน้า) ฟังก์ชันนี้จะส่งคำขอเข้าร่วมไปยัง CoinGecko API พร้อมพารามิเตอร์เหล่านี้ และส่งคืนข้อมูลการตอบกลับ หากมีข้อผิดพลาดระหว่างการร้องขอ ฟังก์ชันจะพิมพ์ข้อความที่แสดงข้อผิดพลาด
  1. การกำหนด search_pools: นี่คือฟังก์ชัน asynchronous  ที่จัดการคำสั่ง ‘/search_pools’ ในบอต Telegram เมื่อผู้ใช้งานเรียกใช้คำสั่งนี้ ฟังก์ชันจะรับพารามิเตอร์การค้นหา เครือข่าย และรวมข้อมูลจากอินพุตของผู้ใช้งาน แล้วเรียกใช้ฟังก์ชัน get_dex_pools ด้วยพารามิเตอร์เหล่านี้ รวมถึงส่งข้อมูลที่ส่งคืนกลับมายังผู้ใช้ หากฟังก์ชัน get_dex_pools ไม่ส่งคืนข้อมูลใด ๆ ฟังก์ชันจะส่งข้อความแสดงข้อผิดพลาดไปยังผู้ใช้งาน
  1. การกำหนดคำสั่งของบอท: ผู้ใช้งานจะกำหนดคำสั่งต่าง ๆ ที่บอทสามารถตอบสนองได้ คำสั่งแต่ละคำสั่งเป็นฟังก์ชันที่จะรับข้อมูลสำหรับการอัปเดต และบริบทเป็น arguments  ซึ่ง arguments อัปเดต (update argument) ประกอบด้วย ข้อมูลเกี่ยวกับข้อความที่เข้ามา และ arguments บริบท (context argument) จะประกอบด้วยข้อมูลเกี่ยวกับสถานะปัจจุบันของบอท
  2. การสร้าง Instance ของClass ApplicationBuilder: ผู้ใช้งานสร้าง Instance ของClass ApplicationBuilder โดยส่งโทเค็นบอท Telegram ของเราเข้าไป Instance นี้จะใช้เพื่อลงทะเบียนตัวจัดการคำสั่งของเราและเริ่มต้นบอท
  1. การเพิ่มตัวจัดการสำหรับคำสั่งของเรา: ผู้ใช้งาน เพิ่มตัวจัดการสำหรับคำสั่งของเรา โดยใช้วิธี add_handler ของ Instance ApplicationBuilder ของเรา ตัวจัดการแต่ละตัวคือ  Instance ของClass CommandHandler ซึ่งจะรับชื่อคำสั่งและฟังก์ชันที่จะเรียกใช้ เมื่อได้รับคำสั่ง
  1. การเริ่มการทำงานของ Bot:  สุดท้าย ผู้ใช้งานจะเรียกใช้งาน run_polling ของ Instance ApplicationBuilder เพื่อเริ่มการทำงานของ Bot วิธีการนี้จะเริ่มกระบวนการ long polling ที่ตรวจหาการอัปเดตใหม่จากเซิร์ฟเวอร์ Telegram

ขั้นตอนที่ 6: ทดสอบบอท

หากผู้ใช้งาน ต้องการทดสอบบอท ให้ทำตามขั้นตอนเหล่านี้

  1. เรียกใช้ script Python ใน terminal ของคุณโดยใช้ python <ไฟล์ของคุณ>.py ในกรณีนี้เป็น python bot.py 
  1. เปิดแอป Telegram และค้นหาบอทของคุณ โดยใช้ชื่อผู้ใช้ที่คุณให้ไว้ เมื่อตอนที่สร้างบอท ในกรณีนี้ของเราคือชื่อ crypto-gecko-bot
  2. เริ่มแชทกับบอทของคุณ และลองใช้คำสั่งต่าง ๆ ต่อไปนี้คือ ที่เป็นคำสั่งที่คุณสามารถใช้ได้:
    1. / start: เริ่มการทำงานของบอท
    2. /data <crypto-name>: รับข้อมูลปัจจุบันสำหรับสกุลเงินดิจิทัลเฉพาะ ตัวอย่างเช่น คุณสามารถพิมพ์ /data bitcoin เพื่อรับข้อมูลปัจจุบันสำหรับ Bitcoin
    3. /high_low <crypto-name>: รับราคาสูงสุดและต่ำสุดของสกุลเงินดิจิทัลโดยเฉพาะ ในช่วง 24 ชั่วโมงที่ผ่านมา
    4. /supply <crypto-name>: รับปริมาณหมุนเวียนและปริมาณรวมของสกุลเงินดิจิทัลที่เฉพาะเจาะจง
    5. /ranks: รับ 10 สกุลเงินดิจิทัลยอดนิยม
    6. /search_pools คำสั่งนี้จะดึงข้อมูลและแสดงข้อมูลพูล Decentralized Exchange (DEX) บนบล็อกเชน

ตัวอย่างของการใช้คำสั่ง  /data bitcoin 

เมื่อเราพิมพ์ /data bitcoin ในบอท Telegram บอทจะดึงข้อมูลสำหรับ Bitcoin จาก CoinGecko API โดยใช้ฟังก์ชัน get_crypto_data ในโปรแกรม Python

จากนั้นบอทจะส่งข้อความกลับมาถึงคุณ พร้อมด้วยราคาปัจจุบันของ Bitcoin และการเปลี่ยนแปลงราคาในช่วง 24 ชั่วโมงที่ผ่านมา รวมถึง มูลค่าตลาด และปริมาณรวมในช่วง 24 ชั่วโมงที่ผ่านมา

ตัวอย่างการใช้คำสั่ง  /ranks

เมื่อคุณพิมพ์/ranks ในบอท Telegram บอทจะดึงข้อมูลสำหรับสกุลเงินดิจิทัล 10 อันดับแรก จาก CoinGecko API โดยใช้ฟังก์ชัน get_top_cryptos ในโปรแกรม Python

จากนั้นบอทจะส่งข้อความกลับไปหาคุณ พร้อมรายชื่อสกุลเงินดิจิทัล 10 อันดับแรก 

ตัวอย่างการ ใช้คำสั่ง /search_pools weth eth base_token

เมื่อเราเรียกใช้คำสั่ง /search_pools weth eth dex  บอทจะดึงข้อมูลพูล DEX บนบล็อกเชนจาก CoinGecko สำหรับการค้นหา เครือข่าย และ attributes ที่ระบุ

ในกรณีนี้ บอทจะค้นหา pools ที่เกี่ยวข้องกับ ‘weth’ บนเครือข่าย ‘eth’ จากนั้นบอทจะจัดรูปแบบข้อมูลนี้ให้เป็นรูปแบบที่มนุษย์สามารถอ่านได้ง่ายขึ้น และแสดงข้อมูลดังกล่าวในแชท ซึ่งรวมถึงรายละเอียดต่างๆ เช่น ID Pool , ชื่อ Pool , ราคาโทเค็นพื้นฐาน (USD), ราคาโทเค็นอ้างอิง (USD) และสภาพคล่องทั้งหมด 

นอกจากนี้ บอทยังให้ข้อมูล เปอร์เซนต์การเปลี่ยนแปลงราคาในช่วง 5 นาที, 1 ชั่วโมง, 6 ชั่วโมง และ 24 ชั่วโมงที่ผ่านมา ซึ่งฟีเจอร์นี้จะช่วยให้ผู้ใช้งาน ได้รับข้อมูลเชิงลึกที่มีคุณค่า เกี่ยวกับเว็บเทรดคริปโตแบบ decentralized  (DEX) ซึ่งช่วยเพิ่มความสามารถของบอท และให้มุมมองที่ครอบคลุมมากขึ้นเกี่ยวกับภูมิทัศน์ในตลาดคริปโต

อย่างไรก็ตาม นี่เป็นการใช้งานในขั้นพื้นฐาน และยังไม่รวมถึงการจัดการข้อผิดพลาดหรือความทนทานบอทที่ระดับการผลิต (production-level) ซึ่งผู้ใช้งานควรตรวจสอบให้แน่ใจว่า ได้จัดการเงื่อนไข และกรณีขอบเขตการใช้งาน เมื่อเขียนบอทเอง

ที่มา : coingecko