Files
Sillyv2/core/im.go
T
2021-10-06 16:45:44 +08:00

166 lines
2.5 KiB
Go

package core
import (
"time"
)
type Sender interface {
GetUserID() int
GetChatID() int
GetImType() string
GetMessageID() int
GetUsername() string
IsReply() bool
GetReplySenderUserID() int
GetRawMessage() interface{}
SetMatch([]string)
SetAllMatch([][]string)
GetMatch() []string
GetAllMatch() [][]string
Get(...int) string
GetContent() string
IsAdmin() bool
IsMedia() bool
Reply(...interface{}) (int, error)
Delete() error
Disappear(lifetime ...time.Duration)
Finish()
Continue()
IsContinue() bool
}
type Edit int
type Replace int
type Notify int
type Article []string
var E Edit
var R Replace
var N Notify
type ImageUrl string
type ImagePath string
type Faker struct {
Message string
matches [][]string
Type string
UserID int
}
func (sender *Faker) GetContent() string {
return sender.Message
}
func (sender *Faker) GetUserID() int {
return sender.UserID
}
func (sender *Faker) GetChatID() int {
return 0
}
func (sender *Faker) GetImType() string {
if sender.Type == "" {
return "fake"
}
return sender.Type
}
func (sender *Faker) GetMessageID() int {
return 0
}
func (sender *Faker) GetUsername() string {
return ""
}
func (sender *Faker) IsReply() bool {
return false
}
func (sender *Faker) GetReplySenderUserID() int {
return 0
}
func (sender *Faker) GetRawMessage() interface{} {
return sender.Message
}
func (sender *Faker) SetMatch(ss []string) {
sender.matches = [][]string{ss}
}
func (sender *Faker) SetAllMatch(ss [][]string) {
sender.matches = ss
}
func (sender *Faker) GetMatch() []string {
return sender.matches[0]
}
func (sender *Faker) GetAllMatch() [][]string {
return sender.matches
}
func (sender *Faker) Get(index ...int) string {
i := 0
if len(index) != 0 {
i = index[0]
}
if len(sender.matches) == 0 {
return ""
}
if len(sender.matches[0]) < i+1 {
return ""
}
return sender.matches[0][i]
}
func (sender *Faker) IsAdmin() bool {
return true
}
func (sender *Faker) IsMedia() bool {
return false
}
func (sender *Faker) Reply(msgs ...interface{}) (int, error) {
rt := ""
var n *Notify
for _, msg := range msgs {
switch msg.(type) {
case []byte:
rt = (string(msg.([]byte)))
case string:
rt = (msg.(string))
case Notify:
v := msg.(Notify)
n = &v
}
}
if rt != "" && n != nil {
NotifyMasters(rt)
}
return 0, nil
}
func (sender *Faker) Delete() error {
return nil
}
func (sender *Faker) Disappear(lifetime ...time.Duration) {
}
func (sender *Faker) Finish() {
}
func (sender *Faker) Continue() {
}
func (sender *Faker) IsContinue() bool {
return true
}