diff options
author | Alexey Yerin <yyp@disroot.org> | 2021-05-18 21:25:17 +0300 |
---|---|---|
committer | Hubert Hirtz <hubert@hirtz.pm> | 2021-05-18 21:26:23 +0200 |
commit | cdab4b7448e8425853beaee5087c51da5040c8cb (patch) | |
tree | a79e6a1614efc443f9df0c9980624d1b474986dc /irc | |
parent | Add /nick (diff) |
Add /mode command
Diffstat (limited to 'irc')
-rw-r--r-- | irc/states.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/irc/states.go b/irc/states.go index d1ead27..b2a129a 100644 --- a/irc/states.go +++ b/irc/states.go @@ -91,6 +91,11 @@ type ( actionChangeNick struct { Nick string } + actionChangeMode struct { + Channel string + Flags string + Args []string + } actionJoin struct { Channel string @@ -437,6 +442,20 @@ func (s *Session) changeNick(act actionChangeNick) (err error) { return } +func (s *Session) ChangeMode(channel string, flags string, args []string) { + s.acts <- actionChangeMode{channel, flags, args} +} + +func (s *Session) changeMode(act actionChangeMode) (err error) { + if strings.IndexAny(act.Channel, s.chantypes) == 0 { + err = s.send("MODE %s %s %s\r\n", + act.Channel, act.Flags, strings.Join(act.Args, " ")) + } else { + err = s.send("MODE %s %s\r\n", act.Channel, act.Flags) + } + return +} + func (s *Session) PrivMsg(target, content string) { s.acts <- actionPrivMsg{target, content} } @@ -534,6 +553,8 @@ func (s *Session) run() { err = s.sendRaw(act) case actionChangeNick: err = s.changeNick(act) + case actionChangeMode: + err = s.changeMode(act) case actionJoin: err = s.join(act) case actionPart: |