OPQBot

package module
v0.0.2-beta5 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2021 License: MIT Imports: 19 Imported by: 0

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,完善戳戳
20210420    添加Mp3转Silk功能和一些其他的功能

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

func MacroAt(qqs []int64) string

MacroAt At宏

func MacroAtAll

func MacroAtAll() string

func MacroId

func MacroId() string

func VoiceMp3ToSilk

func VoiceMp3ToSilk(mp3Path string) (string, error)

VoiceMp3ToSilk Mp3转Silk mp3->silk Output: base64 String

func VoiceSilkToMp3

func VoiceSilkToMp3(base64EncodedSilk string) ([]byte, error)

VoiceSilkToMp3 Silk转Mp3 silk->mp3 Output: []byte 暂未写

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

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

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

func (*BotManager) Chuo

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

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

func (*BotManager) GetFile

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

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

func (*BotManager) GetFriendList

func (b *BotManager) GetFriendList(startIndex int) (FriendList, error)

GetFriendList 获取好友列表

func (*BotManager) GetGroupList

func (b *BotManager) GetGroupList(nextToken string) (GroupList, error)

GetGroupList 获取好友列表

func (*BotManager) GetUserCardInfo

func (b *BotManager) GetUserCardInfo(qq int64) (UserCardInfo, error)

GetUserCardInfo 获取用户信息

func (*BotManager) GetUserInfo

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

GetUserInfo 获取用户信息

func (*BotManager) KickGroupMember

func (b *BotManager) KickGroupMember(groupID, userId int64) error

KickGroupMember 踢出群成员

func (*BotManager) OldSendVoice

func (b *BotManager) OldSendVoice(userID int64, sendToType int, data string) error

OldSendVoice 发送语音 旧版 将被移出

func (*BotManager) ReCallMsg

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

ReCallMsg 撤回消息

func (*BotManager) RefreshKey

func (b *BotManager) RefreshKey() error

RefreshKey 刷新Key

func (*BotManager) RegMiddleware

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

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

func (*BotManager) Send

func (b *BotManager) Send(sendMsgPack SendMsgPack)

Send 发送消息函数

func (*BotManager) SetAdmin

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

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

func (*BotManager) SetForbidden

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

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

func (*BotManager) SetGroupNewNick

func (b *BotManager) SetGroupNewNick(newNick string, groupID, userId int64) error

SetGroupNewNick 设置群名片

func (*BotManager) SetGroupUniqueTitle

func (b *BotManager) SetGroupUniqueTitle(newNick string, groupID, userId int64) error

SetGroupUniqueTitle 设置群头衔

func (*BotManager) SetSendDelayed

func (b *BotManager) SetSendDelayed(Millisecond int)

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

func (*BotManager) Start

func (b *BotManager) Start() error

Start 开始连接

func (*BotManager) Stop

func (b *BotManager) Stop()

Stop 停止

func (*BotManager) Zan

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

Zan QQ赞 次数

type FriendFileResult

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

type FriendList

type FriendList struct {
	FriendCount int `json:"Friend_count"`
	Friendlist  []struct {
		FriendUin int    `json:"FriendUin"`
		IsRemark  bool   `json:"IsRemark"`
		NickName  string `json:"NickName"`
		OnlineStr string `json:"OnlineStr"`
		Remark    string `json:"Remark"`
		Status    int    `json:"Status"`
	} `json:"Friendlist"`
	GetfriendCount    int `json:"GetfriendCount"`
	StartIndex        int `json:"StartIndex"`
	TotoalFriendCount int `json:"Totoal_friend_count"`
}

FriendList 获取好友列表表单

type FriendMsgPack

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

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

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

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

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

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

type GroupJoinPack

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 GroupList

type GroupList struct {
	Count     int    `json:"Count"`
	NextToken string `json:"NextToken"`
	TroopList []struct {
		GroupID          int    `json:"GroupId"`
		GroupMemberCount int    `json:"GroupMemberCount"`
		GroupName        string `json:"GroupName"`
		GroupNotice      string `json:"GroupNotice"`
		GroupOwner       int64  `json:"GroupOwner"`
		GroupTotalCount  int    `json:"GroupTotalCount"`
	} `json:"TroopList"`
}

GroupList 获取群列表表单

type GroupMsgPack

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

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

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

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

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

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

type SendTypePicMsgByBase64Content struct {
	Content string
	Base64  string
	Flash   bool
}

type SendTypePicMsgByBase64ContentPrivateChat

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 UserCardInfo

type UserCardInfo 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"`
}

type UserInfo

type UserInfo struct {
	Code int `json:"code"`
	Data struct {
		Astro         int    `json:"astro"`
		AvatarURL     string `json:"avatarUrl"`
		Bitmap        string `json:"bitmap"`
		Bluevip       int    `json:"bluevip"`
		Commfrd       int    `json:"commfrd"`
		Friendship    int    `json:"friendship"`
		From          string `json:"from"`
		Gender        int    `json:"gender"`
		Greenvip      int    `json:"greenvip"`
		IntimacyScore int    `json:"intimacyScore"`
		IsFriend      int    `json:"isFriend"`
		Logolabel     string `json:"logolabel"`
		Nickname      string `json:"nickname"`
		Publicwalfare int    `json:"publicwalfare"`
		Qqvip         int    `json:"qqvip"`
		Qzone         int    `json:"qzone"`
		Realname      string `json:"realname"`
		Smartname     string `json:"smartname"`
		Uin           int    `json:"uin"`
	} `json:"data"`
	Default int    `json:"default"`
	Message string `json:"message"`
	Subcode int    `json:"subcode"`
}

UserInfo 用户信息表单

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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