summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
authorAlexey Yerin <yyp@disroot.org>2021-05-18 21:25:17 +0300
committerHubert Hirtz <hubert@hirtz.pm>2021-05-18 21:26:23 +0200
commitcdab4b7448e8425853beaee5087c51da5040c8cb (patch)
treea79e6a1614efc443f9df0c9980624d1b474986dc /irc
parentAdd /nick (diff)
Add /mode command
Diffstat (limited to 'irc')
-rw-r--r--irc/states.go21
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: