OPQBot

package module
v0.0.2-beta3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2021 License: MIT Imports: 14 Imported by: 1

README

OPQBot 🎉

GitHub tag (latest SemVer pre-release) GitHub

功能 😄
功能 是否实现
群消息处理事件
好友消息处理事件
机器人事件处理
所有支持的消息发送
At
表情
撤回
下载文件
禁言
群公告
安装 💡

go get github.com/mcoo/OPQBot

例子 👆
package main

import (
	"github.com/mcoo/OPQBot"
	"log"
	"time"
)
func main()  {
	opqBot := OPQBot.NewBotManager(2629326992,"http://192.168.2.2:8899")
	err := opqBot.Start()
	if err != nil {
		log.Println(err.Error())
	}
	defer opqBot.Stop()
	err = opqBot.AddEvent(OPQBot.EventNameOnGroupMessage, func(botQQ int64, packet OPQBot.GroupMsgPack) {
		log.Println(botQQ,packet)
	})
	if err != nil {
		log.Println(err.Error())
	}
	err = opqBot.AddEvent(OPQBot.EventNameOnFriendMessage, func(botQQ int64, packet OPQBot.FriendMsgPack) {
		log.Println(botQQ,packet)
	})
	if err != nil {
		log.Println(err.Error())
	}
	err = opqBot.AddEvent(OPQBot.EventNameOnGroupShut, func(botQQ int64, packet OPQBot.GroupShutPack) {
		log.Println(botQQ,packet)
	})
	if err != nil {
		log.Println(err.Error())
	}
	opqBot.Send(OPQBot.SendMsgPack{
		SendToType: OPQBot.SendToTypeFriend,
		ToUserUid:  2435932516,
		Content:    OPQBot.SendTypePicMsgByUrlContent{Content: "你好", PicUrl: "https://img-home.csdnimg.cn/images/20201124032511.png"},
	})
	time.Sleep(1*time.Hour) // 可以用WaitGroup替代
}

更多请看 wiki

没人看的更新历史 ✏️
20210318    简化发送代码
20210319    将宏移出BotManager,添加对发送队列每次发送时间的控制
20210322    添加发送函数的中间件
20210403    增加发送回调和优化中间件,基础功能完善
20210405    添加对撤回功能的完善和支持 注意看一下 example
20210406    戳一戳功能,example 即是文档
20210407    删除多余log,完善戳戳

Documentation

Index

Constants

View Source
const (
	SendToTypeFriend               = 1
	SendToTypeGroup                = 2
	SendToTypePrivateChat          = 3
	EventNameOnGroupMessage        = "OnGroupMsgs"
	EventNameOnFriendMessage       = "OnFriendMsgs"
	EventNameOnBotEvent            = "OnFriendMsgs"
	EventNameOnGroupJoin           = "ON_EVENT_GROUP_JOIN"
	EventNameOnGroupAdmin          = "ON_EVENT_GROUP_ADMIN"
	EventNameOnGroupExit           = "ON_EVENT_GROUP_EXIT"
	EventNameOnGroupExitSuccess    = "ON_EVENT_GROUP_EXIT_SUCC"
	EventNameOnGroupAdminSysNotify = "ON_EVENT_GROUP_ADMINSYSNOTIFY"
	EventNameOnGroupRevoke         = "ON_EVENT_GROUP_REVOKE"
	EventNameOnGroupShut           = "ON_EVENT_GROUP_SHUT"
	EventNameOnGroupSystemNotify   = "ON_EVENT_GROUP_SYSTEMNOTIFY"
	EventNameOnConnected           = "connection"
	EventNameOnDisconnected        = "disconnection"
	EventNameOnOther               = "other"
)

Variables

This section is empty.

Functions

func MacroAt added in v0.0.7

func MacroAt(qqs []int64) string

At宏

func MacroAtAll added in v0.0.7

func MacroAtAll() string

func MacroId added in v0.1.0

func MacroId() string

Types

type BotManager

type BotManager struct {
	QQ       int64
	SendChan chan SendMsgPack
	Running  bool
	OPQUrl   string
	// contains filtered or unexported fields
}

func NewBotManager

func NewBotManager(QQ int64, OPQUrl string) BotManager

func (*BotManager) AddEvent

func (b *BotManager) AddEvent(EventName string, f interface{}) error

func (*BotManager) Announce added in v0.0.7

func (b *BotManager) Announce(title, text string, pinned, announceType int, groupID int64) error

发公告 Pinned 1为置顶,0为普通公告 announceType 发布类型(10为使用弹窗公告,20为发送给新成员,其他暂未知)

func (*BotManager) Chuo added in v0.1.0

func (b *BotManager) Chuo(sendType int, groupID, userId int64) error

戳戳 sendType 0戳好友 1戳群友 sendType=0 时可以不填此字段 sendType=1 时不能为空

func (*BotManager) GetFile added in v0.0.7

func (b *BotManager) GetFile(fileId string, groupID int64) (FriendFileResult, GroupFileResult, error)

下载文件 groupId 为0 是下载好友分享文件

func (*BotManager) GetUserInfo added in v0.0.7

func (b *BotManager) GetUserInfo(qq int64) (UserInfo, error)

获取用户信息

func (*BotManager) ReCallMsg

func (b *BotManager) ReCallMsg(GroupID, MsgRandom int64, MsgSeq int) error

撤回消息

func (*BotManager) RefreshKey added in v0.0.7

func (b *BotManager) RefreshKey() error

刷新Key

func (*BotManager) RegMiddleware added in v0.0.7

func (b *BotManager) RegMiddleware(priority int, f func(m map[string]interface{}) map[string]interface{}) error

注册 发送函数的中间件 2为最先执行 0为最后执行

func (*BotManager) Send

func (b *BotManager) Send(sendMsgPack SendMsgPack)

发送消息函数

func (*BotManager) SetAdmin added in v0.0.7

func (b *BotManager) SetAdmin(flag int, groupID, userId int64) error

设置管理员 flag 1为设置管理员 2为取消管理员

func (*BotManager) SetForbidden added in v0.0.7

func (b *BotManager) SetForbidden(flag, ShutTime int, groupID, userId int64) error

设置禁言 flag 0为设置全体禁言 1为设置某人禁言 ShutTime 0为取消禁言 >0为禁言分钟数 全体禁言>0为开启禁言

func (*BotManager) SetSendDelayed added in v0.0.7

func (b *BotManager) SetSendDelayed(Millisecond int)

设置发送消息的时延 单位毫秒 默认1000

func (*BotManager) Start

func (b *BotManager) Start() error

开始连接

func (*BotManager) Stop

func (b *BotManager) Stop()

停止

func (*BotManager) Zan added in v0.0.7

func (b *BotManager) Zan(qq int64, num int) int

QQ赞 次数

type FriendFileResult added in v0.0.7

type FriendFileResult struct {
	FileName string `json:"FileName"`
	FileSize int    `json:"FileSize"`
	FromUin  int    `json:"FromUin"`
	URL      string `json:"Url"`
}

type FriendMsgPack added in v0.0.2

type FriendMsgPack struct {
	Content    string      `json:"Content"`
	FromUin    int64       `json:"FromUin"`
	MsgSeq     int         `json:"MsgSeq"`
	MsgType    string      `json:"MsgType"`
	RedBaginfo interface{} `json:"RedBaginfo"`
	ToUin      int64       `json:"ToUin"`
}

type GroupAdminPack added in v0.0.2

type GroupAdminPack struct {
	EventData struct {
		Flag    int   `json:"Flag"`
		GroupID int64 `json:"GroupID"`
		UserID  int64 `json:"UserID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupAdminSysNotifyPack added in v0.0.2

type GroupAdminSysNotifyPack struct {
	EventData struct {
		Seq             int64  `json:"Seq"`
		Type            int    `json:"Type"`
		MsgTypeStr      string `json:"MsgTypeStr"`
		Who             int    `json:"Who"`
		WhoName         string `json:"WhoName"`
		MsgStatusStr    string `json:"MsgStatusStr"`
		Content         string `json:"Content"`
		RefuseContent   string `json:"RefuseContent"`
		Flag7           int    `json:"Flag_7"`
		Flag8           int    `json:"Flag_8"`
		GroupID         int64  `json:"GroupId"`
		GroupName       string `json:"GroupName"`
		ActionUin       int    `json:"ActionUin"`
		ActionName      string `json:"ActionName"`
		ActionGroupCard string `json:"ActionGroupCard"`
		Action          int    `json:"Action"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupExitPack added in v0.0.2

type GroupExitPack struct {
	EventData struct {
		UserID int64 `json:"UserID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupExitSuccessPack added in v0.0.2

type GroupExitSuccessPack struct {
	EventData struct {
		GroupID int64 `json:"GroupID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupFileResult added in v0.0.7

type GroupFileResult struct {
	Ret int    `json:"Ret"`
	URL string `json:"Url"`
}

type GroupJoinPack added in v0.0.2

type GroupJoinPack struct {
	EventData struct {
		InviteUin int64  `json:"InviteUin"`
		UserID    int64  `json:"UserID"`
		UserName  string `json:"UserName"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupMsgPack added in v0.0.2

type GroupMsgPack struct {
	Content       string      `json:"Content"`
	FromGroupID   int64       `json:"FromGroupId"`
	FromGroupName string      `json:"FromGroupName"`
	FromNickName  string      `json:"FromNickName"`
	FromUserID    int64       `json:"FromUserId"`
	MsgRandom     int64       `json:"MsgRandom"`
	MsgSeq        int         `json:"MsgSeq"`
	MsgTime       int         `json:"MsgTime"`
	MsgType       string      `json:"MsgType"`
	RedBaginfo    interface{} `json:"RedBaginfo"`
}

type GroupRevokePack added in v0.0.2

type GroupRevokePack struct {
	EventData struct {
		AdminUserID int   `json:"AdminUserID"`
		GroupID     int64 `json:"GroupID"`
		MsgRandom   int64 `json:"MsgRandom"`
		MsgSeq      int   `json:"MsgSeq"`
		UserID      int64 `json:"UserID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupShutPack added in v0.0.2

type GroupShutPack struct {
	EventData struct {
		GroupID  int64 `json:"GroupID"`
		ShutTime int   `json:"ShutTime"`
		UserID   int64 `json:"UserID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type GroupSystemNotifyPack added in v0.0.2

type GroupSystemNotifyPack struct {
	EventData struct {
		Content string `json:"Content"`
		GroupID int64  `json:"GroupID"`
		UserID  int64  `json:"UserID"`
	} `json:"EventData"`
	EventMsg struct {
		FromUin    int64       `json:"FromUin"`
		ToUin      int64       `json:"ToUin"`
		MsgType    string      `json:"MsgType"`
		MsgSeq     int         `json:"MsgSeq"`
		Content    string      `json:"Content"`
		RedBaginfo interface{} `json:"RedBaginfo"`
	} `json:"EventMsg"`
}

type MyRecord added in v0.1.0

type MyRecord struct {
	FromGroupID int64  `json:"FromGroupId"`
	MsgRandom   int64  `json:"MsgRandom"`
	MsgSeq      int    `json:"MsgSeq"`
	MsgTime     int    `json:"MsgTime"`
	MsgType     string `json:"MsgType"`
	Content     string `json:"Content"`
}

type Result added in v0.0.7

type Result struct {
	Msg string `json:"Msg"`
	Ret int    `json:"Ret"`
}

type SendMsgPack

type SendMsgPack struct {
	SendToType   int
	ToUserUid    int64
	Content      interface{}
	CallbackFunc func(Code int, Info string, record MyRecord)
}

type SendTypeForwordContent

type SendTypeForwordContent struct {
	ForwordBuf   string
	ForwordField int
}

type SendTypeForwordContentPrivateChat

type SendTypeForwordContentPrivateChat struct {
	ForwordBuf   string
	ForwordField int
	Group        int64
}

type SendTypeJsonContent

type SendTypeJsonContent struct {
	Content string
}

type SendTypeJsonContentPrivateChat

type SendTypeJsonContentPrivateChat struct {
	Content string
	Group   int64
}

type SendTypePicMsgByBase64Content added in v0.0.7

type SendTypePicMsgByBase64Content struct {
	Content string
	Base64  string
	Flash   bool
}

type SendTypePicMsgByBase64ContentPrivateChat added in v0.0.7

type SendTypePicMsgByBase64ContentPrivateChat struct {
	Content string
	Base64  string
	Group   int64
	Flash   bool
}

type SendTypePicMsgByLocalContent

type SendTypePicMsgByLocalContent struct {
	Content string
	Path    string
	Flash   bool
}

type SendTypePicMsgByLocalContentPrivateChat

type SendTypePicMsgByLocalContentPrivateChat struct {
	Content string
	Path    string
	Group   int64
	Flash   bool
}

type SendTypePicMsgByMd5Content

type SendTypePicMsgByMd5Content struct {
	Content string
	Md5     string
	Flash   bool
}

type SendTypePicMsgByMd5ContentPrivateChat

type SendTypePicMsgByMd5ContentPrivateChat struct {
	Content string
	Md5s    []string
	Group   int64
	Flash   bool
}

type SendTypePicMsgByUrlContent

type SendTypePicMsgByUrlContent struct {
	Content string
	PicUrl  string
	Flash   bool
}

type SendTypePicMsgByUrlContentPrivateChat

type SendTypePicMsgByUrlContentPrivateChat struct {
	Content string
	PicUrl  string
	Group   int64
	Flash   bool
}

type SendTypeRelayContent

type SendTypeRelayContent struct {
	ReplayInfo interface{}
}

type SendTypeRelayContentPrivateChat

type SendTypeRelayContentPrivateChat struct {
	ReplayInfo interface{}
	Group      int64
}

type SendTypeTextMsgContent

type SendTypeTextMsgContent struct {
	Content string
}

type SendTypeTextMsgContentPrivateChat

type SendTypeTextMsgContentPrivateChat struct {
	Content string
	Group   int64
}

type SendTypeVoiceByLocalContent

type SendTypeVoiceByLocalContent struct {
	Path string
}

type SendTypeVoiceByLocalContentPrivateChat

type SendTypeVoiceByLocalContentPrivateChat struct {
	Path  string
	Group int64
}

type SendTypeVoiceByUrlContent

type SendTypeVoiceByUrlContent struct {
	VoiceUrl string
}

type SendTypeVoiceByUrlContentPrivateChat

type SendTypeVoiceByUrlContentPrivateChat struct {
	VoiceUrl string
	Group    int64
}

type SendTypeXmlContent

type SendTypeXmlContent struct {
	Content string
}

type SendTypeXmlContentPrivateChat

type SendTypeXmlContentPrivateChat struct {
	Content string
	Group   int64
}

type UserInfo added in v0.0.7

type UserInfo struct {
	Age       int    `json:"Age"`
	City      string `json:"City"`
	LikeNums  int    `json:"LikeNums"`
	LoginDays int    `json:"LoginDays"`
	NickName  string `json:"NickName"`
	Province  string `json:"Province"`
	QQLevel   int    `json:"QQLevel"`
	QQUin     int64  `json:"QQUin"`
	Sex       int    `json:"Sex"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL