-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathuser.go
More file actions
84 lines (70 loc) · 1.76 KB
/
user.go
File metadata and controls
84 lines (70 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package stats
import (
"fmt"
"time"
)
type User struct {
HourlyChart
WordCounter
SwearCounter
EmoticonCounter
QuestionsCount
ExclamationsCount
AllCapsCount
BasicTextCounters
ModeCounters
NickReferences
KickCounters SendRecvCounters
SlapCounters SendRecvCounters
Quotes quotes
ID uint
Nick string
Hostmask string
NetworkID uint
MessageIDs []uint
ChannelUsers map[string]*User
LastSeen time.Time
MaxConsecutive uint
}
func NewUser(id uint, networkID uint, nick string) *User {
user := User{
ID: id,
Nick: nick,
NetworkID: networkID,
MessageIDs: make([]uint, 0),
ChannelUsers: make(map[string]*User),
WordCounter: NewWordCounter(),
SwearCounter: NewSwearCounter(),
EmoticonCounter: NewEmoticonCounter(),
NickReferences: make(NickReferences),
}
return &user
}
// newChannelUser
func (u *User) addChannelUser(channel string) *User {
cu := NewUser(u.ID, u.NetworkID, u.Nick)
u.ChannelUsers[channel] = cu
return cu
}
func (u *User) addMessage(network *Network, channel *Channel, message *Message) {
u.MessageIDs = append(u.MessageIDs, message.ID)
if message.Kind == Msg {
u.HourlyChart.addMessage(message)
u.Quotes.addMessage(message)
u.WordCounter.addMessage(message)
u.SwearCounter.addMessage(message)
u.EmoticonCounter.addMessage(message)
u.BasicTextCounters.addMessage(message)
u.QuestionsCount.addMessage(message)
u.ExclamationsCount.addMessage(message)
u.AllCapsCount.addMessage(message)
u.NickReferences.addMessage(network, channel, message)
}
if message.Kind == Mode {
u.ModeCounters.addMessage(message)
}
u.LastSeen = message.Date
}
func (u *User) String() string {
return fmt.Sprintf("User: %s, Messages: %d", u.Nick, len(u.MessageIDs))
}