update docs (#188)
This commit is contained in:
parent
93c73833e0
commit
f49c0367ad
@ -60,7 +60,7 @@ func main() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 普通登录
|
#### 扫码登录
|
||||||
|
|
||||||
上面的准备工作做完了,下面就可以登录,直接调用`Bot.Login`即可。
|
上面的准备工作做完了,下面就可以登录,直接调用`Bot.Login`即可。
|
||||||
|
|
||||||
@ -68,6 +68,8 @@ func main() {
|
|||||||
bot.Login()
|
bot.Login()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`Login`方法会阻塞当前 goroutine,直到登录成功或者失败。
|
||||||
|
|
||||||
登录会返回一个`error`,即登录失败的原因。
|
登录会返回一个`error`,即登录失败的原因。
|
||||||
|
|
||||||
|
|
||||||
@ -88,6 +90,17 @@ bot.HotLogin(reloadStorage)
|
|||||||
|
|
||||||
`HotLogin`需要接受一个`热存储容器对象`来调用。`热存储容器`用来保存登录的会话信息,本质是一个接口类型
|
`HotLogin`需要接受一个`热存储容器对象`来调用。`热存储容器`用来保存登录的会话信息,本质是一个接口类型
|
||||||
|
|
||||||
|
我们第一次进行热登录的时候,因为我们的`热存储容器`是空的,所以这时候会发生错误。
|
||||||
|
|
||||||
|
我们只需要在`HotLogin`增加一个参数,让它在失败后执行扫码登录即可
|
||||||
|
|
||||||
|
```go
|
||||||
|
bot.HotLogin(reloadStorage, openwechat.HotLoginWithRetry(true))
|
||||||
|
```
|
||||||
|
|
||||||
|
当扫码登录成功后,会将会话信息写入到`热存储容器`中,下次再执行热登录的时候就会从`热存储容器`中读取会话信息,直接登录成功。
|
||||||
|
|
||||||
|
|
||||||
```go
|
```go
|
||||||
// 热登陆存储接口
|
// 热登陆存储接口
|
||||||
type HotReloadStorage io.ReadWriter
|
type HotReloadStorage io.ReadWriter
|
||||||
@ -97,6 +110,51 @@ type HotReloadStorage io.ReadWriter
|
|||||||
|
|
||||||
实现这个接口,实现你自己的存储方式。
|
实现这个接口,实现你自己的存储方式。
|
||||||
|
|
||||||
|
#### 免扫码登录
|
||||||
|
|
||||||
|
目前热登录有一点缺点就是它的有效期很短(具体多久我也不知道)。
|
||||||
|
|
||||||
|
我们平常在pc上登录微信的时候,通常只需要登录一次,第二次就会在微信上有一个确认登录的按钮,点击确认就会往手机上发送一个确认登录的请求,这样就可以免扫码登录了。
|
||||||
|
|
||||||
|
openwechat也提供了这样的功能。
|
||||||
|
|
||||||
|
```go
|
||||||
|
bot.PushLogin(storage HotReloadStorage, opts ...PushLoginOptionFunc) error
|
||||||
|
```
|
||||||
|
|
||||||
|
`PushLogin`需要传入一个`热存储容器`,和一些可选参数。
|
||||||
|
|
||||||
|
`HotReloadStorage` 跟上面一样,用来保存会话信息,必要参数。
|
||||||
|
|
||||||
|
`PushLoginOptionFunc`是一个可选参数,用来设置一些额外的行为。
|
||||||
|
|
||||||
|
目前有下面几个可选参数:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// PushLoginWithoutUUIDCallback 设置 PushLogin 不执行二维码回调, 默认为 true
|
||||||
|
func PushLoginWithoutUUIDCallback(flag bool) PushLoginOptionFunc
|
||||||
|
|
||||||
|
// PushLoginWithoutScanCallback 设置 PushLogin 不执行扫码回调, 默认为true
|
||||||
|
func PushLoginWithoutScanCallback(flag bool) PushLoginOptionFunc
|
||||||
|
|
||||||
|
// PushLoginWithoutLoginCallback 设置 PushLogin 不执行登录回调,默认为false
|
||||||
|
func PushLoginWithoutLoginCallback(flag bool) PushLoginOptionFunc
|
||||||
|
|
||||||
|
// PushLoginWithRetry 设置 PushLogin 失败后执行扫码登录,默认为false
|
||||||
|
func PushLoginWithRetry(flag bool) PushLoginOptionFunc
|
||||||
|
```
|
||||||
|
|
||||||
|
注意:如果是第一次登录,``PushLogin`` 一定会失败的,因为我们的`HotReloadStorage`里面没有会话信息,你需要设置失败会进行扫码登录。
|
||||||
|
|
||||||
|
```go
|
||||||
|
bot := openwechat.DefaultBot()
|
||||||
|
reloadStorage := openwechat.NewJsonFileHotReloadStorage("storage.json")
|
||||||
|
err = bot.PushLogin(reloadStorage, openwechat.PushLoginWithRetry(true))
|
||||||
|
```
|
||||||
|
|
||||||
|
这样当第一次登录失败的时候,会自动执行扫码登录。
|
||||||
|
|
||||||
|
扫码登录成功后,会自动保存会话信息到`HotReloadStorage`,下次登录就可以直接使用`PushLogin`了,就会往手机上发送确认登录的请求。
|
||||||
|
|
||||||
|
|
||||||
### 扫码回调
|
### 扫码回调
|
||||||
@ -262,5 +320,29 @@ self, err := bot.GetCurrentUser()
|
|||||||
bot.Block()
|
bot.Block()
|
||||||
```
|
```
|
||||||
|
|
||||||
该方法会一直阻塞,直到用户主动退出或者网络请求发生错误
|
该方法会一直阻塞,直到用户主动退出或者网络请求发生错误。
|
||||||
|
|
||||||
|
|
||||||
|
### 控制Bot存活
|
||||||
|
|
||||||
|
判断当前的`Bot`是否存活。
|
||||||
|
|
||||||
|
```go
|
||||||
|
func (b *Bot) Alive() bool
|
||||||
|
```
|
||||||
|
|
||||||
|
当返回为`true`则表示`Bot`存活。
|
||||||
|
|
||||||
|
如何控制`Bot`存活呢?
|
||||||
|
|
||||||
|
```go
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
|
bot := openwechat.DefaultBot(openwechat.WithContext(ctx))
|
||||||
|
```
|
||||||
|
|
||||||
|
`WithContext`接受一个`context.Context`对象,当`context`对象被取消时,`Bot`也会被取消。
|
||||||
|
|
||||||
|
当前我们也可以调用`bot.Logout`来主动退出当前的`Bot`,当`Bot`退出后,`bot.Alive()`会返回`false`。
|
||||||
|
|
||||||
|
|
||||||
|
@ -158,6 +158,11 @@ sender, err := msg.SenderInGroup()
|
|||||||
msg.IsSendBySelf()
|
msg.IsSendBySelf()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 是否为拍一拍
|
||||||
|
|
||||||
|
```go
|
||||||
|
msg.IsTickled()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
#### 消息是否由好友发出
|
#### 消息是否由好友发出
|
||||||
|
@ -400,10 +400,10 @@ func (f Friends) SendText(text string, delay ...time.Duration) error
|
|||||||
#### 群发图片
|
#### 群发图片
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (f Friends) SendImage(file *os.File, delay ...time.Duration) error
|
func (f Friends) SendImage(file io.Reader, delay ...time.Duration) error
|
||||||
```
|
```
|
||||||
|
|
||||||
* `file`:`os.file`类型,即发送图片的文件指针
|
* `file`:`io.Reader`类型。
|
||||||
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
||||||
|
|
||||||
|
|
||||||
@ -411,10 +411,10 @@ func (f Friends) SendImage(file *os.File, delay ...time.Duration) error
|
|||||||
#### 群发文件
|
#### 群发文件
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (f Friends) SendFile(file *os.File, delay ...time.Duration) error
|
func (f Friends) SendFile(file io.Reader, delay ...time.Duration) error
|
||||||
```
|
```
|
||||||
|
|
||||||
* `file`:`os.file`类型,即发送文件的文件指针
|
* `file`:`io.Reader`类型。
|
||||||
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
||||||
|
|
||||||
|
|
||||||
@ -545,10 +545,10 @@ func (g Groups) SendText(text string, delay ...time.Duration) error
|
|||||||
#### 群发图片
|
#### 群发图片
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (g Groups) SendImage(file *os.File, delay ...time.Duration) error
|
func (g Groups) SendImage(file io.Reader, delay ...time.Duration) error
|
||||||
```
|
```
|
||||||
|
|
||||||
* `file`:`os.file`类型,即发送文件的文件指针
|
* `file`:`io.Reader`类型。
|
||||||
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
||||||
|
|
||||||
|
|
||||||
@ -556,10 +556,10 @@ func (g Groups) SendImage(file *os.File, delay ...time.Duration) error
|
|||||||
#### 群发文件
|
#### 群发文件
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (g Groups) SendFile(file *os.File, delay ...time.Duration) error
|
func (g Groups) SendFile(file io.Reader, delay ...time.Duration) error
|
||||||
```
|
```
|
||||||
|
|
||||||
* `file`:`os.file`类型,即发送文件的文件指针
|
* `file`:`io.Reader`类型。
|
||||||
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
* `delay`:每次发送消息的间隔(发送消息过快可能会被wx检测到,最好加上间隔时间)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user