Die GO -Implementierung der WeChat -Webversion -API simuliert die Anmeldung/Kontakt-/Nachricht, die Funktionen der WeChat -Webversion senden und empfangen. Es kann die von WeChat empfangenen Nachrichten vollständig übernehmen und Ihre eigenen Sendeninhalte anpassen.
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git
go get -u -v github.com/songtianyi/wechat-go
cd $GOPATH/src/github.com/songtianyi/wechat-go
go get ./...
go build examples/linux/terminal_bot.go
./terminal_bot
Die Windows-Version muss mithilfe von Cross-Compilation auf Nicht-Windows-Systemen erzeugt und dann nach der Generation unter Windows ausgeführt werden.
GOOS=windows GOARCH=amd64 go build examples/windows/windows_bot.go
./windows_bot.exe
扫码图片需要用软件打开,路径在输出日志内.
Go-Aida
package main
import (
"github.com/songtianyi/rrframework/logs"
"github.com/songtianyi/wechat-go/plugins/wxweb/faceplusplus"
"github.com/songtianyi/wechat-go/plugins/wxweb/gifer"
"github.com/songtianyi/wechat-go/plugins/wxweb/replier"
"github.com/songtianyi/wechat-go/plugins/wxweb/switcher"
"github.com/songtianyi/wechat-go/wxweb"
)
func main () {
// 创建session, 一个session对应一个机器人
// 二维码显示在终端上
session , err := wxweb . CreateSession ( nil , nil , wxweb . TERMINAL_MODE )
if err != nil {
logs . Error ( err )
return
}
// 注册插件, 所有插件默认是开启的
faceplusplus . Register ( session )
replier . Register ( session )
switcher . Register ( session )
gifer . Register ( session )
// 你也可以自己选择关闭插件里的handler(消息处理器)
session . HandlerRegister . DisableByName ( "faceplusplus" )
// 登录并接收消息
if err := session . LoginAndServe ( false ); err != nil {
logs . Error ( "session exit, %s" , err )
}
}Ein Plugin zum Verwalten von Plugins
#关闭某个插件, 在微信聊天窗口输入
disable faceplusplus
#开启某个插件, 在微信聊天窗口输入
enable faceplusplus
#查看所有插件信息, 在微信聊天窗口输入
dump
Machen Sie die Gesichtserkennung für erhaltene Bilder, geben Sie Geschlecht und Alter zurück
Verwenden Sie die empfangenen Textnachrichten als Schlüsselwörter, um nach GIFs zu suchen, und geben Sie das GIF -Diagramm zurück. Beachten Sie, dass das zurückgegebene GIF möglicherweise eine große Größe aufweist, z. B. die Textnachrichten enthalten Schlüsselwörter wie "verschmutzt".
Antworten Sie automatisch auf empfangene Text-/Bildmeldungen und antworten Sie auf feste Textnachrichten
Holen Sie sich zufällig ein schönes Bild und geben Sie es in das Chat -Fenster ein
美女
Holen Sie sich einen Witz und geben Sie ihn in das Chat -Fenster ein
笑话
Das vom Mobiltelefon gesendete Message-Rückzugs-Plug-In und die Textnachrichten werden nach 3 Sekunden automatisch zurückgezogen. Die vom Roboter gesendeten Nachrichten müssen die Auszahlungslogik in das entsprechende Plug-In schreiben.
Systemaufforderungen für die Verarbeitung von Nachrichtenenthebungen/roten Umschlägen usw.
Ändern Sie für die Weiterleitung von Nachrichten über Gruppen hinweg, ändern Sie einfach die volle Schreibweise des Gruppennamens im Plug-In.
Das chinesisch-englische Übersetzungs-Plug-In, basierend auf Youtao-Übersetzungs-API
Akzeptieren Sie automatisch Freundschaftsanfragen und können gemäß den Bedingungen gefiltert werden
Beispiel für die automatische Verteilung von Ressourcen (Kartenhaus)
Konfigurationsverwaltungs-Plug-in-Einstellungen, geben Sie in das Chat-Fenster ein
set config key value
Überprüfen Sie die Konfiguration und geben Sie sie in das Chat -Fenster ein
get config key
Verwenden der Konfiguration im Code
import "github.com/songtianyi/wechat-go/kv"
func demo () {
kv . KVStorageInstance . Set ( "key" , "value" )
v := kv . KVStorageInstance . Get ( "key" )
if v == nil {
return
}
// v.(string) etc.
}Zwei Prinzipien von benutzerdefinierten Plug-Ins
Plugin -Beispiel
package demo // 以插件名命令包名
import (
"github.com/songtianyi/rrframework/logs" // 导入日志包
"github.com/songtianyi/wechat-go/wxweb" // 导入协议包
)
// 必须有的插件注册函数
// 指定session, 可以对不同用户注册不同插件
func Register ( session * wxweb. Session ) {
// 将插件注册到session
// 第一个参数: 指定消息类型, 所有该类型的消息都会被转发到此插件
// 第二个参数: 指定消息处理函数, 消息会进入此函数
// 第三个参数: 自定义插件名,不能重名,switcher插件会用到此名称
session . HandlerRegister . Add ( wxweb . MSG_TEXT , wxweb . Handler ( demo ), "textdemo" )
// 开启插件
if err := session . HandlerRegister . EnableByName ( "textdemo" ); err != nil {
logs . Error ( err )
}
}
// 消息处理函数
func demo ( session * wxweb. Session , msg * wxweb. ReceivedMessage ) {
// 可选: 可以用contact manager来过滤, 比如过滤掉没有保存到通讯录的群
// 注意,contact manager只存储了已保存到通讯录的群组
contact := session . Cm . GetContactByUserName ( msg . FromUserName )
if contact == nil {
logs . Error ( "ignore the messages from" , msg . FromUserName )
return
}
// 可选: 根据消息类型来过滤
if msg . MsgType == wxweb . MSG_IMG {
return
}
// 可选: 根据wxweb.User数据结构中的数据来过滤
if contact . PYQuanPin != "songtianyi" {
// 比如根据用户昵称的拼音全拼来过滤
return
}
// 可选: 过滤和自己无关的群组消息
if msg . IsGroup && msg . Who != session . Bot . UserName {
return
}
// 取出收到的内容
// 取text
logs . Info ( msg . Content )
//// 取img
//if b, err := session.GetImg(msg.MsgId); err == nil {
// logs.Debug(string(b))
//}
// anything
// 回复消息
// 第一个参数: 回复的内容
// 第二个参数: 机器人ID
// 第三个参数: 联系人/群组/特殊账号ID
session . SendText ( "plugin demo" , session . Bot . UserName , wxweb . RealTargetUserName ( session , msg ))
// 回复图片和gif 参见wxweb/session.go
}