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.
This commit is contained in:
Jaron Swab 2019-06-13 21:14:32 -04:00
parent 4bcdcd1ccd
commit fcd44fe63f
3 changed files with 39 additions and 0 deletions

View File

@ -538,6 +538,16 @@ func (c *Container) SendTyping(roomID string, typing bool) {
}
}
// CreateRoom attempts to create a new room and join the user.
func (c *Container) CreateRoom(req *mautrix.ReqCreateRoom) (*rooms.Room, error) {
resp, err := c.client.CreateRoom(req)
if err != nil {
return nil, err
}
room := c.GetRoom(resp.RoomID)
return room, nil
}
// JoinRoom makes the current user try to join the given room.
func (c *Container) JoinRoom(roomID, server string) (*rooms.Room, error) {
resp, err := c.client.JoinRoom(roomID, server, nil)

View File

@ -90,6 +90,7 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor {
"quit": cmdQuit,
"clearcache": cmdClearCache,
"leave": cmdLeave,
"create": cmdCreateRoom,
"join": cmdJoin,
"kick": cmdKick,
"ban": cmdBan,

View File

@ -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>")