1. 程式人生 > 其它 >基於python Wechaty的微信群虛擬幣報價機器人

基於python Wechaty的微信群虛擬幣報價機器人

Wechaty Blog:wechaty-bot-of-coins
本專案基於python-wechaty庫,通過幾行程式碼就能實現微信機器人的基礎功能。
專案地址:coins_market_push

實現功能

群聊中加密貨幣的報價

  • 檢索群聊中的加密貨幣幣種關鍵詞
  • 幣種匹配成功,從網路獲取加密貨幣行情,目前支援三種平臺
  • 在群聊中傳送加密貨幣行情資訊,並@傳送者

效果展示

使用步驟

1、專案配置

class Notice:
    EVENT_NAME = 'notice_python'
    TOKEN = '{your IFTTT TOKEN}'
    KEY = '{your notice key}'

class Zengr:
    APP_CODE = '{your app code}}'

class PATH: # fxh幣種列表
    PATH_JSON = path_root + '/coin_list.json'

class WECHAT: # wechaty token的配置
    TOKEN = '{your wechaty token}'

class CoinGK: # CoinGeCko的幣種列表
    PATH_JSON = path_root + '/conin_list_cgk.json'
  • Notice: 通過IFTTT傳送通知到手機(僅測試了iphone),這裡可以配置IFTTT的token
  • Zengr:加密貨幣行情提供商,新使用者有免費次數,目前收集的幣種不多,不推薦
  • CoinGK:提供免費API可以獲取行情,但免費版功能受限,能滿足基本要求

本專案預設使用非小號網站資料,不需要token,注意使用時要自律
目前我們使用的wechaty token是官方的免費版,僅7天試用期。如果要使用長期版本的話,您可以成為wechaty的貢獻者,或者花錢購買。
畢竟錢能解決的事情,都不算事情。
還有一種方式,就是使用UOS的web協議登陸,參考使用免費Web協議

2、主要程式碼

talk is cheep, show you the code

wechety.py

async def on_message(msg: Message):
    text: str = msg.text()
    room: Optional[Room] = msg.room()
    if text.startswith('@Robot'):
        rev_str = text.replace(' ', '')
        symbol = rev_str.split(' ')[-1]
    else:
        symbol = text
    talker = msg.talker()
    if get_conin_seq(symbol) > 0:
        await room.say(get_price(symbol), mention_ids=[talker.contact_id])

這裡是訊息處理入口,get_price(symbol): symbol為幣種,get_price()函式返回幣種行情。get_conin_seq函式用於檢查是否支援symbol幣種。

def get_price(symbol):
    symbol = symbol.upper()
    idx = get_conin_seq(symbol)
    result = get_coin(idx)
    ret =   '\n' \
            '【名稱】 ' + result['data'][0]['fullname'] + '-' + result['data'][0]['name'] + '\n' \
            '【USD價格】 ' +'$' + str(result['data'][0]['current_price_usd']) + '\n' \
            '【CNY價格】 ' +'¥' + str(result['data'][0]['current_price']) + '\n' \
            '【全球市值】 ' + '$' + str('%.2f' % (result['data'][0]['marketcap']/100000000)) + '億\n' \
            '【24H漲幅】 ' + str(result['data'][0]['change_percent']) + '%\n' \
            '【24H換手】 ' + str(result['data'][0]['turnoverrate']) + '%\n\n' \
            + str(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) ) + '\n' \
            '資料來源:非小號'
    return ret

這裡是get_price的具體實現,目前支援非小號前500個幣種。

3、執行

python wechat/wechaty.py

掃碼登入後,其他使用者在添加了機器人的群中直接傳送幣種(symbol),例如(btc、eth等),稍後機器人便會發送此幣種行情到微信群中,並@傳送者查收。

注意

要注意一下,對於個人賬戶來說,幣價查詢訪問不要太頻繁,容易被伺服器檢測。

作者: 劉小龍,默默無聞的嵌入式工程師