aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2019-03-27 01:21:25 +0200
committerTulir Asokan <tulir@maunium.net>2019-03-27 01:21:25 +0200
commit6a3017888fa0d2cdea581b99b5521b10b9312716 (patch)
treed900e8bc2e2fa3ba041a10df68a41431d5f1c75c
parent01f456781c11005780abc1e878a91f1a79bdd50a (diff)
parentcefa840c28067e33bf67dd65aa267779cdeae34e (diff)
Merge remote-tracking branch 'nepugia/nep' into mauview
-rw-r--r--ui/command-processor.go8
-rw-r--r--ui/commands.go80
2 files changed, 86 insertions, 2 deletions
diff --git a/ui/command-processor.go b/ui/command-processor.go
index 0aed4b2..77a7b3d 100644
--- a/ui/command-processor.go
+++ b/ui/command-processor.go
@@ -78,7 +78,9 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor {
aliases: map[string]*Alias{
"part": {"leave"},
"send": {"sendevent"},
+ "msend": {"msendevent"},
"state": {"setstate"},
+ "mstate":{"msetstate"},
"rb": {"rainbow"},
},
commands: map[string]CommandHandler{
@@ -89,11 +91,17 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor {
"clearcache": cmdClearCache,
"leave": cmdLeave,
"join": cmdJoin,
+ "kick": cmdKick,
+ "ban": cmdBan,
+ "unban": cmdUnban,
"toggle": cmdToggle,
"logout": cmdLogout,
"sendevent": cmdSendEvent,
+ "msendevent": cmdMSendEvent,
"setstate": cmdSetState,
+ "msetstate": cmdMSetState,
"rainbow": cmdRainbow,
+ "invite": cmdInvite,
},
}
}
diff --git a/ui/commands.go b/ui/commands.go
index 12a99de..bba1644 100644
--- a/ui/commands.go
+++ b/ui/commands.go
@@ -112,6 +112,64 @@ func cmdLeave(cmd *Command) {
}
}
+func cmdInvite(cmd *Command) {
+ if len(cmd.Args) != 1 {
+ cmd.Reply("Usage: /invite <user id>")
+ return
+ }
+ _, err := cmd.Matrix.Client().InviteUser(cmd.Room.MxRoom().ID, &mautrix.ReqInviteUser{cmd.Args[0]})
+ if err != nil {
+ debug.Print("Error in invite call:", err)
+ cmd.Reply("Failed to invite user:", err)
+ }
+}
+
+func cmdBan(cmd *Command) {
+ if len(cmd.Args) < 1 {
+ cmd.Reply("Usage: /ban <user> <optional:reason>")
+ return
+ }
+ reason := "you are the weakest link, goodbye!"
+ if len(cmd.Args) >= 2 {
+ reason = strings.Join(cmd.Args[1:]," ")
+ }
+ _, err := cmd.Matrix.Client().BanUser(cmd.Room.MxRoom().ID, &mautrix.ReqBanUser{reason,cmd.Args[0]})
+ if err != nil {
+ debug.Print("Error in ban call:", err)
+ cmd.Reply("Failed to ban user:", err)
+ }
+
+}
+
+func cmdUnban(cmd *Command) {
+ if len(cmd.Args) != 1 {
+ cmd.Reply("Usage: /unban <user>")
+ return
+ }
+ _, err := cmd.Matrix.Client().UnbanUser(cmd.Room.MxRoom().ID, &mautrix.ReqUnbanUser{cmd.Args[0]})
+ if err != nil {
+ debug.Print("Error in unban call:", err)
+ cmd.Reply("Failed to unban user:", err)
+ }
+}
+
+func cmdKick(cmd *Command) {
+ if len(cmd.Args) < 1 {
+ cmd.Reply("Usage: /kick <user> <optional:reason>")
+ return
+ }
+ reason := "you are the weakest link, goodbye!"
+ if len(cmd.Args) >= 2 {
+ reason = strings.Join(cmd.Args[1:]," ")
+ }
+ _, err := cmd.Matrix.Client().KickUser(cmd.Room.MxRoom().ID, &mautrix.ReqKickUser{reason,cmd.Args[0]})
+ if err != nil {
+ debug.Print("Error in kick call:", err)
+ debug.Print("Failed to kick user:", err)
+ }
+
+}
+
func cmdJoin(cmd *Command) {
if len(cmd.Args) == 0 {
cmd.Reply("Usage: /join <room>")
@@ -129,6 +187,15 @@ func cmdJoin(cmd *Command) {
}
}
+func cmdMSendEvent(cmd *Command) {
+ if len(cmd.Args) < 2 {
+ cmd.Reply("Usage: /msend <event type> <content>")
+ return
+ }
+ cmd.Args = append([]string{cmd.Room.MxRoom().ID},cmd.Args...)
+ cmdSendEvent(cmd)
+}
+
func cmdSendEvent(cmd *Command) {
debug.Print(cmd.Command, cmd.Args, len(cmd.Args))
if len(cmd.Args) < 3 {
@@ -137,7 +204,7 @@ func cmdSendEvent(cmd *Command) {
}
roomID := cmd.Args[0]
eventType := mautrix.NewEventType(cmd.Args[1])
- rawContent := strings.Join(cmd.Args[2:], "")
+ rawContent := strings.Join(cmd.Args[2:], " ")
debug.Print(roomID, eventType, rawContent)
var content interface{}
@@ -158,6 +225,15 @@ func cmdSendEvent(cmd *Command) {
}
}
+func cmdMSetState(cmd *Command) {
+ if len(cmd.Args) < 2 {
+ cmd.Reply("Usage: /msetstate <event type> <state key> <content>")
+ return
+ }
+ cmd.Args = append([]string{cmd.Room.MxRoom().ID},cmd.Args...)
+ cmdSetState(cmd)
+}
+
func cmdSetState(cmd *Command) {
if len(cmd.Args) < 4 {
cmd.Reply("Usage: /setstate <room id> <event type> <state key/`-`> <content>")
@@ -170,7 +246,7 @@ func cmdSetState(cmd *Command) {
if stateKey == "-" {
stateKey = ""
}
- rawContent := strings.Join(cmd.Args[3:], "")
+ rawContent := strings.Join(cmd.Args[3:], " ")
var content interface{}
err := json.Unmarshal([]byte(rawContent), &content)