aboutsummaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/command-processor.go1
-rw-r--r--ui/commands.go28
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>")