微信群中的加密货币报价机器人

背景

当今正时大牛市 (或者牛快结束了), 在很多时候并没有办法打开App软件看币价, 比如在上课的时候, 在上班摸鱼的时候, 在地铁上的时候, 所以在微信群中,查询自己所需要的币的价格是很有必要的.

部署环境

Node.js16+ (目前不要上15的车)

TypeScript

qrcode-terminal wechaty wechaty-puppet-padlocal

在此项目中, 目前使用的是免费无限制的非小号API, 大致能用, 没上二线交易所以上的币一般没有.

本人运行环境 Debian 10.

实现

刚开始使用尝试的是python实现,后来遇到了连接不上的问题(搭了gateway也连不上), 后面使用Typescript实现时再次遇到了连接不上的问题.

后面发现是服务器的问题, 建议用服务器:

ping gateway.pad-local.com

尝试能不能ping通.

在此项目中,大致框架借鉴的是 wechaty-puppet-padlocal-demo, 在此基础上进行修改,在部署时可以先按着Demo进行操作.

Demo使用没问题时, 便可以进行二次修改.

// coinBot.ts
import { PuppetPadlocal } from "wechaty-puppet-padlocal";
import { Contact, log, Message, ScanStatus, Wechaty } from "wechaty";

const puppet = new PuppetPadlocal({
    token: "puppet_padlocal_yourTokenHere" // 输入你的token.
}) 

const bot = new Wechaty({
    name: "TestBot",
    puppet,
})

    .on("scan", (qrcode: string, status: ScanStatus) => {
        if (status === ScanStatus.Waiting && qrcode) {
            const qrcodeImageUrl = [
                'https://wechaty.js.org/qrcode/',
                encodeURIComponent(qrcode),
            ].join('')

            log.info("TestBot", `onScan: ${ScanStatus[status]}(${status}) - ${qrcodeImageUrl}`);

            require('qrcode-terminal').generate(qrcode, { small: true })  // show qrcode on console
        } else {
            log.info("TestBot", `onScan: ${ScanStatus[status]}(${status})`);
        }
    })

    .on("login", (user: Contact) => {
        log.info("TestBot", `${user} login`);
    })

    .on("logout", (user: Contact, reason: string) => {
        log.info("TestBot", `${user} logout, reason: ${reason}`);
    })

    .on("message", async (message: Message) => {
        if(message.text().toString().includes(".-")){  // 这里的反应前缀可以根据需求修改
            log.info(message.text().toString()); // 打印一下反应的Text.
            const s1 = message.text().toString().split("-")[1]; 
            let result = await coinBot(s1);
            const member = message.talker();
            if(result != null)
            {
                message.room().say("\n" + result,member);
            }
            else{
                log.info(message.toString());
                message.room().say("\n" + "没这币",member);
            }    
        };
    })

    .on("error", (error) => {
        log.error("TestBot", 'on error: ', error.stack);
    })

bot.start().then(() => {
    log.info("TestBot", "started.");
});

    async function coinBot(s1){
    var result;
    import rp  from 'request-promise';
    const requestOptions = {
    method: 'GET',
    uri: 'https://fxhapi.feixiaohao.com/public/v1/ticker', // 这里使用的非小号的API
    qs: {
    'start': '0',
    'limit': '5000',  //非小号最高数据5000
    'convert': 'USD'
    },
    json: true,
    gzip: true
    };

    let response = await rp(requestOptions);
    for(var each in response)
    {
        if(response[each]["symbol"].toLowerCase() == s1)
        {
            result = "[币种]: " + response[each]["symbol"] +`\n` + "[价格]: " +response[each]["price_usd"] + '\n' + "[24小时涨幅]: " + response[each]["percent_change_24h"] + "%";
            break;
        }
    }
    return result;
}

运行效果

效果图

致谢

谢谢Wechaty团队‘好大’的指导.

作者: heygum

本研究基于扩展卡尔曼滤波(EKF)方法,构建了一套用于航天器姿态与轨道协同控制的仿真系统。该系统采用参数化编程设计,具备清晰的逻辑结构和详细的代码注释,便于用户根据具体需求调整参数。所提供的案例数据可直接在MATLAB环境中运行,无需额外预处理步骤,适用于计算机科学、电子信息工程及数学等相关专业学生的课程设计、综合实践或毕业课题。 在航天工程实践中,精确的姿态与轨道控制是保障深空探测、卫星组网及空间设施建设等任务成功实施的基础。扩展卡尔曼滤波作为一种适用于非线性动态系统的状态估计算法,能够有效处理系统模型中的不确定性与测量噪声,因此在航天器耦合控制领域具有重要应用价值。本研究实现的系统通过模块化设计,支持用户针对不同航天器平台或任务场景进行灵活配置,例如卫星轨道维持、飞行器交会对接或地外天体定点着陆等控制问题。 为提升系统的易用性与教学适用性,代码中关键算法步骤均附有说明性注释,有助于用户理解滤波器的初始化、状态预测、观测更新等核心流程。同时,系统兼容多个MATLAB版本(包括2014a、2019b及2024b),可适应不同的软件环境。通过实际操作该仿真系统,学生不仅能够深化对航天动力学与控制理论的认识,还可培养工程编程能力与实际问题分析技能,为后续从事相关技术研究或工程开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值