mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 02:00:11 -08:00
implement channel modes and messages properly
This commit is contained in:
parent
0bfa2fb98f
commit
488b2ccf8f
6 changed files with 156 additions and 80 deletions
15
irc/types.go
15
irc/types.go
|
|
@ -15,6 +15,10 @@ type Mask string
|
|||
// add, remove, list modes
|
||||
type ModeOp rune
|
||||
|
||||
func (op ModeOp) String() string {
|
||||
return string(op)
|
||||
}
|
||||
|
||||
// user mode flags
|
||||
type UserMode rune
|
||||
|
||||
|
|
@ -37,9 +41,6 @@ func (mode ChannelMode) String() string {
|
|||
return fmt.Sprintf("%c", mode)
|
||||
}
|
||||
|
||||
// user-channel mode flags
|
||||
type ChannelMemberMode rune
|
||||
|
||||
type ChannelNameMap map[string]*Channel
|
||||
|
||||
func (channels ChannelNameMap) Add(channel *Channel) error {
|
||||
|
|
@ -84,19 +85,19 @@ func (clients ClientNameMap) Remove(client *Client) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
type ChannelMemberModeSet map[ChannelMemberMode]bool
|
||||
type ChannelModeSet map[ChannelMode]bool
|
||||
|
||||
type ClientSet map[*Client]ChannelMemberModeSet
|
||||
type ClientSet map[*Client]ChannelModeSet
|
||||
|
||||
func (clients ClientSet) Add(client *Client) {
|
||||
clients[client] = make(ChannelMemberModeSet)
|
||||
clients[client] = make(ChannelModeSet)
|
||||
}
|
||||
|
||||
func (clients ClientSet) Remove(client *Client) {
|
||||
delete(clients, client)
|
||||
}
|
||||
|
||||
func (clients ClientSet) HasMode(client *Client, mode ChannelMemberMode) bool {
|
||||
func (clients ClientSet) HasMode(client *Client, mode ChannelMode) bool {
|
||||
modes, ok := clients[client]
|
||||
if !ok {
|
||||
return false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue