基於python Wechaty的微信群虛擬幣報價機器人
阿新 • • 發佈:2021-08-28
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等),稍後機器人便會發送此幣種行情到微信群中,並@傳送者查收。
注意
要注意一下,對於個人賬戶來說,幣價查詢訪問不要太頻繁,容易被伺服器檢測。
作者: 劉小龍,默默無聞的嵌入式工程師