mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-22 02:52:00 -08:00
implement CHANSERV AMODE
This commit is contained in:
parent
f142bf065d
commit
1016f86f70
4 changed files with 126 additions and 27 deletions
|
|
@ -303,3 +303,37 @@ func (channel *Channel) Founder() string {
|
|||
defer channel.stateMutex.RUnlock()
|
||||
return channel.registeredFounder
|
||||
}
|
||||
|
||||
func (channel *Channel) AccountToUmode() (result []modes.ModeChange) {
|
||||
channel.stateMutex.RLock()
|
||||
defer channel.stateMutex.RUnlock()
|
||||
for account, mode := range channel.accountToUMode {
|
||||
result = append(result, modes.ModeChange{
|
||||
Mode: mode,
|
||||
Arg: account,
|
||||
Op: modes.Add,
|
||||
})
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (channel *Channel) ApplyAccountToUmodeChange(change modes.ModeChange) (applied bool) {
|
||||
channel.stateMutex.Lock()
|
||||
defer channel.stateMutex.Unlock()
|
||||
|
||||
current := channel.accountToUMode[change.Arg]
|
||||
switch change.Op {
|
||||
case modes.Add:
|
||||
applied = (current != change.Mode)
|
||||
if applied {
|
||||
channel.accountToUMode[change.Arg] = change.Mode
|
||||
}
|
||||
case modes.Remove:
|
||||
applied = (current == change.Mode)
|
||||
if applied {
|
||||
delete(channel.accountToUMode, change.Arg)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue