koa2開發微信公衆號: 不按期推送最新幣圈消息

背景:比特幣說好的segwit2x分叉最後卻分叉不成,現在算力又不夠,因而比特現金想篡位? 沒一個星期就漲了快10倍,錯過這趟快車甚是後悔,因而打算寫一個可不按期推送最新消息的微信公衆號。既然是利用微信這個平臺載體,固然要熟悉微信的api,遂封裝了一下。javascript

固然你也能夠不看wechat-koa2的代碼,直接使用下面的demo,不用百行代碼即可輕鬆實現定製的幣圈最新消息推送,後期會推出自動爬取全球各大交易所的最新消息,任何幣種上線第一時間通知到位java

先放出wechat-koa2 API,後續有時間再根據庫幣提供的api做封裝node

插播一個廣告: 庫幣是由一羣數字資產愛好者建立而成的一個專一區塊鏈資產的交易平臺,創始團隊主要來自螞蟻金服、廣發證券等互聯網和金融公司,致力於打造世界級的區塊鏈資產交易平臺。(跟NEO發放GAS同樣,按期天天會根據用戶持有的KCS發放鼓勵金) 邀請註冊連接 -> https://www.kucoin.com/#/?r=E...python

0x00 wechat-koa2

const config = require('./config')

const Koa = require('koa')
const app = new Koa()

const Router = require('koa-router')
const router = new Router()

const Wechat = require('wechat-koa2')

const w = new Wechat(config)

// 封裝事後的koa-bodyparser
app.use(w.bodyParser())

// 微信服務器校驗
router.get('/', async(ctx) => {
    w.serverVerify(ctx)
})

// 監聽用戶發送過來的消息
router.post('/', async (ctx) => {
    await w.listening(ctx)
}

// 具體業務在可全寫在這裏,註冊監聽(具體看後文介紹)
// ....
// ....

app.use(router.routes()).use(router.allowedMethods())

console.log('START: ', `wechat server is listening at ${config.port} ...`)

app.listen(config.port)

0x01 發送幣種,查詢實時價格和漲幅

這裏使用的是sosobtc的接口,固然你也可使用其餘接口,如 zb.com庫幣git

const config = require('./config')

const Koa = require('koa')
const app = new Koa()

const Router = require('koa-router')
const router = new Router()

const Wechat = require('wechat-koa2')

const w = new Wechat(config)

// 封裝事後的koa-bodyparser
app.use(w.bodyParser())

// 微信服務器校驗
router.get('/', async(ctx) => {
    w.serverVerify(ctx)
})

// 監聽用戶發送過來的消息
router.post('/', async (ctx) => {
    await w.listening(ctx)
}

// 具體業務 具體業務 具體業務
w.onText(data => {
    const text = data.Content.toLowerCase()
    const coinURL = `http://sosobtc.in/api/vi/analysis/coinAllWeb?coin=${text}`
    
    w.get(coinURL).then(result => {
        result = result[0]
        const coin = result.coin
        const webSiteCn = result.webSiteCn || result.webSite
        const change24H = result.change24H
        const close = result.close
        const high = result.high
        const low = result.low
        
        if(coin.toLowerCase() === 'btc') {
            w.replyText(result_2 => {
                toUser: result_2.FromUserName,
                fromUser: result_2.ToUserName,
                content: `當前查詢幣種: BTC (${webSiteCn})
                        最新價格: ${close}
                        24H漲幅: ${change24H}%
                        最高價格: ${high} USD
                        最低價格: ${low} USD
                        來源: <a href="http://sosobtc.in/soso/kline_list?coin=btc">點擊這裏</a>
                `
            })
        } else {
            w.replyText(result_2 => {
                toUser: result_2.FromUserName,
                fromUser: result_2.ToUserName,
                content: `當前查詢幣種: ${coin.toLowerCase()} (${webSiteCn})
                        最新價格: ${close}
                        24H漲幅: ${change24H}%
                        最高價格: ${high} BTC
                        最低價格: ${low} BTC
                        來源: <a href="http://sosobtc.in/soso/kline_list?coin=${coin.toLowerCase()}">點擊這裏</a>
                `
            })
        }
    })
})

app.use(router.routes()).use(router.allowedMethods())

console.log('START: ', `wechat server is listening at ${config.port} ...`)

app.listen(config.port)

PS: 本人原混於各類幣圈,bts 2塊3時入手靠信仰一直持到如今(哭...)。目前正在學習區塊鏈(nodejs/python/go),若你也有興趣,歡迎一塊兒交流探討github

相關文章
相關標籤/搜索