ในคู่มือนี้ จะกล่าวถึงวิธีการสร้างบอท 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
- เปิดแอป Telegram และค้นหาบอท ‘BotFather’ ซึ่ง BotFather คือบอทตัวเดียวที่จะควบคุมบอททั้งหมด โดยจะช่วยคุณในการสร้างบอทตัวใหม่และเปลี่ยนการตั้งค่าสำหรับบอทที่มีอยู่
- เริ่มแชท และทำตามคำแนะนำเพื่อสร้างบอทใหม่ โดยจะต้องระบุชื่อ รวมถึงชื่อผู้ใช้งานสำหรับบอทของคุณ
- หลังจากสร้างบอทแล้ว ผู้ใช้งานจะได้รับโทเค็น ซึ่งโทเค็นในที่นี้คือ “รหัสผ่าน” สำหรับบอทของคุณ ผู้ใช้งานจะต้องใช้โทเค็นนี้ ในการส่งคำขอไปยัง 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 ออก เพื่อทำความเข้าใจในแต่ละส่วน รวมถึงบทบาทที่สำคัญในส่วนเหล่านี้ สำหรับการทำงานโดยรวมของบอท:
- การนำเข้าไลบรารีและโมดูลที่จำเป็น : ขั้นตอนแรกในโค้ดคือ การนำเข้าไลบรารีและโมดูลที่จำเป็น ซึ่งได้แก่ telegram, telegram.ext และ requests โดยไลบรารีเหล่านี้ เป็นเครื่องมือที่เราต้องการใช้เพื่อโต้ตอบกับ Telegram API และส่งคำขอ HTTP ไปยัง CoinGecko API
- การกำหนดคีย์ API ของ CoinGecko : ต้องทำการกำหนดคีย์ API ของ CoinGecko ซึ่งใช้ในการตรวจสอบคำขอของเราไปยัง API ของ CoinGecko โดยคีย์นี้มีความสำคัญต่อการเข้าถึงข้อมูลสกุลเงินดิจิทัลที่บอทของเราจะจัดเตรียมให้
- การกำหนดฟังก์ชัน get_crypto_data : ฟังก์ชันนี้จะดึงข้อมูลสำหรับสกุลเงินดิจิทัลโดยเฉพาะจาก CoinGecko API โดยจะส่งคำขอเข้าร่วม ไปยัง /coins/markets endpoint ของ CoinGecko API และส่งคืนข้อมูลสำหรับสกุลเงินดิจิทัลที่ระบุ
- การกำหนดฟังก์ชัน get_top_cryptos : ฟังก์ชันนี้จะดึงข้อมูลของสกุลเงินดิจิทัล 10 อันดับแรกจาก CoinGecko API โดยจะส่งคำขอเข้าร่วมไปยัง /coins/markets endpoint ของ CoinGecko API พร้อมพารามิเตอร์เฉพาะเพื่อจัดลำดับผลลัพธ์ตามมูลค่าตลาดและจำกัดจำนวนผลลัพธ์
- การกำหนด get_dex_pools : ฟังก์ชันนี้รับผิดชอบในการดึงข้อมูลพูล Decentralized Exchange (DEX) บนเชนจาก CoinGecko API ฟังก์ชันนี้ใช้พารามิเตอร์ 4 ตัว ได้แก่ query (ชื่อของพูล), network (เครือข่ายที่ดำเนินการอยู่), include (แอตทริบิวต์เฉพาะที่คุณต้องการรวมไว้ในการตอบกลับ) และ page (สำหรับผลลัพธ์แบบแบ่งหน้า) ฟังก์ชันนี้จะส่งคำขอเข้าร่วมไปยัง CoinGecko API พร้อมพารามิเตอร์เหล่านี้ และส่งคืนข้อมูลการตอบกลับ หากมีข้อผิดพลาดระหว่างการร้องขอ ฟังก์ชันจะพิมพ์ข้อความที่แสดงข้อผิดพลาด
- การกำหนด search_pools: นี่คือฟังก์ชัน asynchronous ที่จัดการคำสั่ง ‘/search_pools’ ในบอต Telegram เมื่อผู้ใช้งานเรียกใช้คำสั่งนี้ ฟังก์ชันจะรับพารามิเตอร์การค้นหา เครือข่าย และรวมข้อมูลจากอินพุตของผู้ใช้งาน แล้วเรียกใช้ฟังก์ชัน get_dex_pools ด้วยพารามิเตอร์เหล่านี้ รวมถึงส่งข้อมูลที่ส่งคืนกลับมายังผู้ใช้ หากฟังก์ชัน get_dex_pools ไม่ส่งคืนข้อมูลใด ๆ ฟังก์ชันจะส่งข้อความแสดงข้อผิดพลาดไปยังผู้ใช้งาน
- การกำหนดคำสั่งของบอท: ผู้ใช้งานจะกำหนดคำสั่งต่าง ๆ ที่บอทสามารถตอบสนองได้ คำสั่งแต่ละคำสั่งเป็นฟังก์ชันที่จะรับข้อมูลสำหรับการอัปเดต และบริบทเป็น arguments ซึ่ง arguments อัปเดต (update argument) ประกอบด้วย ข้อมูลเกี่ยวกับข้อความที่เข้ามา และ arguments บริบท (context argument) จะประกอบด้วยข้อมูลเกี่ยวกับสถานะปัจจุบันของบอท
- การสร้าง Instance ของClass ApplicationBuilder: ผู้ใช้งานสร้าง Instance ของClass ApplicationBuilder โดยส่งโทเค็นบอท Telegram ของเราเข้าไป Instance นี้จะใช้เพื่อลงทะเบียนตัวจัดการคำสั่งของเราและเริ่มต้นบอท
- การเพิ่มตัวจัดการสำหรับคำสั่งของเรา: ผู้ใช้งาน เพิ่มตัวจัดการสำหรับคำสั่งของเรา โดยใช้วิธี add_handler ของ Instance ApplicationBuilder ของเรา ตัวจัดการแต่ละตัวคือ Instance ของClass CommandHandler ซึ่งจะรับชื่อคำสั่งและฟังก์ชันที่จะเรียกใช้ เมื่อได้รับคำสั่ง
- การเริ่มการทำงานของ Bot: สุดท้าย ผู้ใช้งานจะเรียกใช้งาน run_polling ของ Instance ApplicationBuilder เพื่อเริ่มการทำงานของ Bot วิธีการนี้จะเริ่มกระบวนการ long polling ที่ตรวจหาการอัปเดตใหม่จากเซิร์ฟเวอร์ Telegram
ขั้นตอนที่ 6: ทดสอบบอท
หากผู้ใช้งาน ต้องการทดสอบบอท ให้ทำตามขั้นตอนเหล่านี้
- เรียกใช้ script Python ใน terminal ของคุณโดยใช้ python <ไฟล์ของคุณ>.py ในกรณีนี้เป็น python bot.py
- เปิดแอป Telegram และค้นหาบอทของคุณ โดยใช้ชื่อผู้ใช้ที่คุณให้ไว้ เมื่อตอนที่สร้างบอท ในกรณีนี้ของเราคือชื่อ crypto-gecko-bot
- เริ่มแชทกับบอทของคุณ และลองใช้คำสั่งต่าง ๆ ต่อไปนี้คือ ที่เป็นคำสั่งที่คุณสามารถใช้ได้:
- / start: เริ่มการทำงานของบอท
- /data <crypto-name>: รับข้อมูลปัจจุบันสำหรับสกุลเงินดิจิทัลเฉพาะ ตัวอย่างเช่น คุณสามารถพิมพ์ /data bitcoin เพื่อรับข้อมูลปัจจุบันสำหรับ Bitcoin
- /high_low <crypto-name>: รับราคาสูงสุดและต่ำสุดของสกุลเงินดิจิทัลโดยเฉพาะ ในช่วง 24 ชั่วโมงที่ผ่านมา
- /supply <crypto-name>: รับปริมาณหมุนเวียนและปริมาณรวมของสกุลเงินดิจิทัลที่เฉพาะเจาะจง
- /ranks: รับ 10 สกุลเงินดิจิทัลยอดนิยม
- /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