2023年最新 wechaty 框架开发微信机器人详细 API 教程说明(NodeJs 版本)

news2024/11/25 13:26:41

基本概述 wechaty 基础

在使用 wechaty 相关 api 之前,请大家先学习基础篇:如何使用 wechaty 框架开发微信机器人详细教程(NodeJs 版本)

设置 script 脚本执行

在 package.json 文件中,配置 "start": "node bot.js"

在这里插入图片描述
在 terminal 终端进行执行

PS C:\Users\Administrator\Desktop\HackerWaking\Wechaty-Project> npm start

> wechaty-project@1.0.0 start
> node index.js

扫描登陆 scan Event

The scan event generates a QR code to integrate your bot to a puppet provider.

扫描事件生成一个QR码

import { Wechaty, ScanStatus, log } from 'wechaty'

async function onScan(qrcode, status) {
  console.info('Scan QR Code to login, status:', status, ScanStatus[status])
  console.info('https://wechaty.js.org/qrcode/' + encodeURIComponent(qrcode))
}

const bot = new Wechaty({
  name: 'bot-name',
})

bot.on('scan', onScan)
bot.start()
  .then(() => log.info('StarterBot', 'Starter Bot Started.'))
  .catch(e => log.error('StarterBot', e))

登陆:设置登陆监听 bot.on('login', bot => {})

function onLogin (bot) {
	console.info('Bot logged in:', bot)
}

bot.on('login', onLogin)
await bot.start()

退出:设置退出监听

function onLogout (user) {
	log.info('StarterBot', '%s logout', user)
}
bot.on('logout',  onLogout)
await bot.start()

监听消息 Message

function onMessage (message) {
	console.info('New message:', message)
}

bot.on('message', onMessage)
await bot.start()

接收的群消息对象 message 展示如下

WechatifiedMessageImpl {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  id: '7458368884477369075',
  payload: {
    id: '7458368884477369075',
    talkerId: '@0d338805848b00ec72e959136c0f98db9fc79cc225b2dfb91f486d6a9319c523',
    text: 'Hello',
    timestamp: 1694002096,
    type: 7,
    roomId: '@@bceca2586516062041ee67998a5ad24bd304cf7ae14b667c6c16e74dd248b544',
    mentionIdList: []
  },
  [Symbol(kCapture)]: false
}

Message 类 常见方法说明

方法描述类型
.from()获取发送消息的联系人Contact / null
.to()获取消息发送的联系人。在微信群中,Message.to() 会返回 null,使用 Message.room() 获取微信群信息。Contact / null
.room()获取消息所在的微信群,如果这条消息不在微信群中,会返回 nullRoom / null
.text()获取消息的文本内容。string
.type()获取消息的类型MessageType
.self()查看这条消息是否为机器人发送的。boolean
.mention()获取在群中 @ 的用户列表。Promise
.mentionSelf()获取机器人是否在群里被 @ 了Promise

群类型 Room

方法描述类型
.say(textOrContactOrFileOrUrl, …mentionList)在群内发消息,如果设置了 …mentionList 参数,机器人在群内发送消息的时候还会@这些联系人Promise <void>
.add(contact)邀请好友加入群聊Promise <void>
.del(contact)将好友移出群聊,这个功能仅在机器人是群主的时候会生效Promise <void>
.quit()机器人主动退群Promise <void>
.topic([newTopic])设置 / 获取 群名称Promise <void | string>
.announce([text])设置 / 获取 群公告Promise <void | string>
.qrcode()获取群二维码,用户可以通过扫描这个二维码加入群聊Promise <string>
.alias(contact)获取这个联系人在群内的群昵称Promise <null | string>
.has(contact)检查群内是否有这个群成员Promise <boolean>
owner()获取群主的信息Contact | null
.avatar()获取群头像的信息Promise <FileBox>
onMessage(message) {
  const room = message.room()
  if (room) {
    console.log(room)
    const talker = message.talker(); 
    talker.say("hello, i got your message")
  }
}

talker.say() 私聊发送消息

room.say("hello, good night!") 群聊发送消息

Impl 接口的实现

WechatifiedRoomImpl {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  id: '@@af95d96d3c31bc8999708594b48c5f4d79660cc48285a17706e85be3b92e7b2a',
  payload: {
    adminIdList: [],
    avatar: '/cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=0&username=@@af95d96d3c31bc8999708594b48c5f4d79660cc48285a17706e85be3b92e7b2a&skey=@crypt_13d84e54_8d83375971336cd46842d5667ee67649',
    id: '@@af95d96d3c31bc8999708594b48c5f4d79660cc48285a17706e85be3b92e7b2a',
    memberIdList: [
      '@a01b4c748882b1f35b685428cded4ea6386437d974e348240d644c61c883f855',
      '@0209e75ea4788f781e241a1a2ac7936563a90d11f6c0dcc3f067035cb6d5dd91'
    ],
    topic: '雨落晴天, 一语中的'
  },
  [Symbol(kCapture)]: false
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenWrt的内核启动分析

u-boot从Flash分区中读取Linux内核到内存&#xff0c;然后跳转到内存&#xff08;某个地址&#xff09;执行Linux内核。Linux内核会进行一系列验证&#xff0c;根据设备树文件&#xff08;见下图openwrt/target/linux/realtek/dts-5.15/XXX.dts&#xff0c;&#xff09;注册相关…

gma 2 教程(二)数据操作:7.矢量数据操作简介

功能逻辑架构 gma矢量数据操作类主要包括数据资源&#xff08;DataSource&#xff09;、矢量图层&#xff08;Layer&#xff09;、矢量要素&#xff08;Feature&#xff09;&#xff08;与ogr一致&#xff0c;内部与ogr差异巨大&#xff09;&#xff0c;三者的示意图如下&#…

ctfshow-web-红包一

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 题目 0x02 Write Up 上来就丢了一个站&#xff0c;还有一个不怎么有用的图片。 按照常规流程&#xff0c;先扫目录&#xff0c;但是无果&#xff08;工具…

Java # Java基础八股

1、JVM、JRE、JDK之间的关系 个人理解&#xff1a;JVM可以帮助屏蔽底层的操作系统&#xff0c;使程序一次编译到处都可以运行&#xff0c;JVM可以运行class文件。JRE是java文件运行的环境&#xff0c;但不能新建程序&#xff0c;JRE包含JVM。JDK功能最齐全&#xff0c;包含了编…

基于TSINGSEE青犀视频AI智能技术的自然生态水源保护管理解决方案

一、方案背景 水是生命之源&#xff0c;日常生产生活离不开水。围绕全面深入打好打赢碧水保卫战&#xff0c;针对集中式饮用水源地等野外场景碎片化的特点&#xff0c;迫切需要建设数字智治、闭环管理、规范高效的水质监测体系&#xff0c;进一步加强水源地保护工作的开展落地…

腾讯云服务器优惠价格表(2023年最新版)

腾讯云作为国内领先的云服务提供商&#xff0c;提供了多种规格的云服务器&#xff0c;满足不同用户的需求&#xff0c;本文将详细介绍腾讯云服务器的优惠价格&#xff0c;并给出相应的购买建议。 腾讯云服务器提供了多种配置和多种购买时长选择&#xff0c;用户可以根据实际需求…

超震撼!全网疯传的第七届世界渲染大赛创意大盘点

第七届CG挑战赛TOP100新鲜出炉&#xff01;这是一场被圈内誉为“地表最强”、“全球最火”的世界渲染大赛&#xff0c;由拥有百万订阅的油管博主 pwnisher 发起。这次比赛的创作主题是《Boss Fight—终极决斗》&#xff0c;吸引了2880名创意大师和视觉艺术爱好者的参与。他们的…

【操作系统】聊聊页面置换算法

操作系统的缓存淘汰 操作系统一是提供的基础编程接口&#xff0c;二是实现软件治理的功能。但是因为内存是有限的&#xff0c;想要在有限的内存多存储数据&#xff0c;就利用段、页、段页方式进行数据的映射。但是内存存储有限&#xff0c;所以如何将内存中不用的数据进行及时…

【数据分享】2012-2022年1km分辨率全球夜间灯光时序数据(无需转发\免费获取)

夜间灯光数据是我们在各项研究中经常使用的数据&#xff01;在之前的文章中我们分享了来自NCEI国家环境信息中心的2012-2022年全球范围的逐年的NPP/VIIRS夜间灯光数据&#xff08;可查看之前推送的文章获悉详情&#xff09;&#xff01; 我们本次为大家分享的是来自中国农业大…

shell脚本学习积累

文章目录 创建shell脚本并运行条件测试基础shell脚本打包过去24小时内修改过的文件自动解压 bzip2, gzip 和 zip不同类型的压缩包打印一个rpm包的统计信息【含有输入参数】 创建shell脚本并运行 方式1&#xff1a; vim myshell.sh #文件开头是#!/bin/bash 或 #!/bin/sh sh mys…

小黑完成广播操比赛,荣获三等奖,回来晕车晚上弹琴的leetcode之旅:121. 买卖股票的最佳时机

小黑代码 class Solution:def maxProfit(self, prices: List[int]) -> int:# 数组长度n len(prices)# 最大利润profit 0# 中间变量min_ prices[0]# 遍历每一个数据作为买点for i in range(1, n):# 滚动获取最小值if prices[i] - min_ > profit:profit prices[i] - m…

无涯教程-JavaScript - BIN2HEX函数

描述 BIN2HEX函数将二进制数转换为十六进制。 语法 BIN2HEX (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的二进制数。 数字不能超过10个字符(10位)。数字的最高有效位是符号位。其余的9位是幅度位。 负数使用二进制补码表示。 Requiredplaces 要…

Scrum敏捷模式的优势点、实践经验及适用企业

Scrum敏捷模式是一种灵活、适应性强的开发方法&#xff0c;其核心理念是以短周期、高频率的方式进行项目开发&#xff0c;确保团队能够快速响应变化。 Scrum包含三个角色&#xff1a;产品负责人&#xff08;Product Owner&#xff09;、Scrum Master和开发团队&#xff08;Tea…

IntelliJ IDEA远程调试:使用IDEA Remote Debug进行高效调试的指南

引言 在开发分布式系统时&#xff0c;调试是一个重要但复杂的环节。开发者通常需要跨越多个服务、模块和线程来追踪和解决问题。在没有远程调试的情况下&#xff0c;许多开发者会在代码中添加各种日志语句&#xff0c;然后重新部署和上线来调试。这种方法不仅费时&#xff0c;…

Unity 编辑器资源导入处理函数 OnPostprocessTexture :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPostprocessTexture 用法 点击封面跳转下载页面 简介 在Unity中&#xff0c;我们可以使用编辑器资源导入处理函数&#xff08;OnPostprocessTexture&#xff09;来自定义处理纹理资源的导入过程。这个函数是继承自AssetPostprocessor类的&…

Seal梁胜:近水楼台先得月,IT人员应充分利用AI解决问题

2023年9月2日&#xff0c;由平台工程技术社区与数澈软件Seal联合举办的⌈AIGC时代下的平台工程⌋——2023平台工程技术大会在北京圆满收官。吸引了近300名平台工程爱好者现场参会&#xff0c;超过3000名观众在线上直播平台观看了本届大会。 数澈软件 Seal 联合创始人梁胜博士和…

mysql文档--默认存储引擎--innodb存储引擎--innodb引擎全解

阿丹&#xff1a; 在mysql中innodb是默认的存储引擎。研究一下为什么它会被独宠。 官方解释&#xff1a; InnoDB&#xff0c;是MySQL的数据库引擎之一&#xff0c;现为MySQL的默认存储引擎&#xff0c;为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发&#xf…

活动报名场地预约自定义表单小程序开发

活动报名场地预约自定义表单小程序开发 专门为活动报名开发的一款小程序&#xff0c;可以自定义各种活动报名、活动预约&#xff0c;支持付费预约报名。 功能&#xff1a; 自定义字段&#xff1a;字符串、单选、复选、日期、列表、图片、城市、关联字段等自定义字段类型配置…

浅谈 Node.js 与快速入门使用——前端开发工程师必须要知道的技术(文末送书福利6.0)

文章目录 &#x1f4cb;前言&#x1f3af;什么是 Node.js&#x1f3af;安装与使用 Node.js&#x1f9e9;直接安装 Node.js&#x1f9e9;使用 Node Version Manager&#xff08;NVM&#xff09;&#x1f9e9;使用 Node.js &#x1f3af;Node.js 基础知识&#x1f9e9;模块系统&a…

matplotlib 使用

import matplotlib.pyplot as plt %matplotlib inlineplt.figure()#创建一个画布 plt.plot([1, 0, 9], [4, 5, 6])#点数据&#xff0c;横坐标&#xff0c;纵坐标&#xff0c;相当于&#xff08;1&#xff0c;4&#xff09;&#xff08;0&#xff0c;5&#xff09;&#xff08;9…