From fcd44fe63fe0cedc038db92ae39507237cc5589a Mon Sep 17 00:00:00 2001 From: Jaron Swab Date: Thu, 13 Jun 2019 21:14:32 -0400 Subject: Users can now create a new room directly in Gomuks Added the ability to create a room from within gomuks using the now `/create` command. This comman takes the room name followed by the alias. Room name may contain spaces but the alias may not as per the Matrix alias conventions. Also update `/help` to include the new command. --- ui/command-processor.go | 1 + ui/commands.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'ui') 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 - Send an emote message. /rainbow - Send a rainbow message (markdown not supported). +/create - Create a room with associated alias. (Alias must not contain spaces.) /join - 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 (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 ") -- cgit v1.2.3