44 lines
984 B
Plaintext
44 lines
984 B
Plaintext
modeconv = require "irce.modules.ngircd.modes"
|
|
|
|
class Channel
|
|
new: (data) =>
|
|
assert data.name
|
|
data.members = {} unless data.members
|
|
data.modes = {} unless data.modes
|
|
data.topic = "" unless data.topic
|
|
for k, v in pairs data
|
|
self[k] = v
|
|
|
|
add_hat: (who, mode) =>
|
|
hat = modeconv.convert mode
|
|
usermodes = assert @members[who\lower!]
|
|
for _, chhat in pairs usermodes
|
|
return if chhat == hat
|
|
|
|
usermodes[#usermodes+1] = hat
|
|
|
|
del_hat: (who, mode) =>
|
|
hat = modeconv.convert mode
|
|
usermodes = assert @members[who\lower!]
|
|
|
|
for i, v in pairs usermodes
|
|
if v == hat
|
|
table.remove usermodes, i
|
|
return
|
|
|
|
add_mode: (mode) =>
|
|
for _, chmd in pairs @modes
|
|
return if chmd == mode
|
|
|
|
@modes[#@modes+1] = mode
|
|
|
|
del_mode: (mode) =>
|
|
for i, v in pairs @modes
|
|
if v == mode
|
|
table.remove @modes, i
|
|
return
|
|
|
|
string.format "desync detected: mode %s isn't set on %s", mode, @name
|
|
|
|
Channel
|