diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/command-processor.go | 1 | ||||
-rw-r--r-- | ui/commands.go | 28 |
2 files changed, 29 insertions, 0 deletions
diff --git a/ui/command-processor.go b/ui/command-processor.go index 7a4c2c1..0692ae3 100644 --- a/ui/command-processor.go +++ b/ui/command-processor.go @@ -90,6 +90,7 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor { "quit": cmdQuit, "clearcache": cmdClearCache, "leave": cmdLeave, + "create": cmdCreateRoom, "join": cmdJoin, "kick": cmdKick, "ban": cmdBan, diff --git a/ui/commands.go b/ui/commands.go index 3847c10..c2102fd 100644 --- a/ui/commands.go +++ b/ui/commands.go @@ -121,6 +121,7 @@ func cmdHelp(cmd *Command) { /me <message> - Send an emote message. /rainbow <message> - Send a rainbow message (markdown not supported). +/create <Room Name> <RoomAlias> - Create a room with associated alias. (Alias must not contain spaces.) /join <room address> - Join a room. /leave - Leave the current room. @@ -203,6 +204,33 @@ func cmdKick(cmd *Command) { } +func cmdCreateRoom(cmd *Command) { + if len(cmd.Args) < 2 { + cmd.Reply("Usage: /create <Room Name> <RoomAlias> (Alias must not contain spaces.)") + return + } + // Get room name as one string from cmd.Args + roomName := "" + for i, v := range cmd.Args { + if i == len(cmd.Args)-1 { + break + } + roomName += fmt.Sprintf("%s ", v) + } + last := len(cmd.Args) - 1 // last arg for room alias + // Build the ReqCreateRoom Struct + // https://godoc.org/maunium.net/go/mautrix#ReqCreateRoom + req := &mautrix.ReqCreateRoom{ + Name: strings.TrimSpace(roomName), + RoomAliasName: cmd.Args[last], + } + _, err := cmd.Matrix.Client().CreateRoom(req) + debug.Print("Create room error:", err) + if err == nil { + cmd.Reply("The room has been created.") + } +} + func cmdJoin(cmd *Command) { if len(cmd.Args) == 0 { cmd.Reply("Usage: /join <room>") |