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:
parent
4bcdcd1ccd
commit
fcd44fe63f
@ -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.
|
// JoinRoom makes the current user try to join the given room.
|
||||||
func (c *Container) JoinRoom(roomID, server string) (*rooms.Room, error) {
|
func (c *Container) JoinRoom(roomID, server string) (*rooms.Room, error) {
|
||||||
resp, err := c.client.JoinRoom(roomID, server, nil)
|
resp, err := c.client.JoinRoom(roomID, server, nil)
|
||||||
|
@ -90,6 +90,7 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor {
|
|||||||
"quit": cmdQuit,
|
"quit": cmdQuit,
|
||||||
"clearcache": cmdClearCache,
|
"clearcache": cmdClearCache,
|
||||||
"leave": cmdLeave,
|
"leave": cmdLeave,
|
||||||
|
"create": cmdCreateRoom,
|
||||||
"join": cmdJoin,
|
"join": cmdJoin,
|
||||||
"kick": cmdKick,
|
"kick": cmdKick,
|
||||||
"ban": cmdBan,
|
"ban": cmdBan,
|
||||||
|
@ -121,6 +121,7 @@ func cmdHelp(cmd *Command) {
|
|||||||
/me <message> - Send an emote message.
|
/me <message> - Send an emote message.
|
||||||
/rainbow <message> - Send a rainbow message (markdown not supported).
|
/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.
|
/join <room address> - Join a room.
|
||||||
/leave - Leave the current 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) {
|
func cmdJoin(cmd *Command) {
|
||||||
if len(cmd.Args) == 0 {
|
if len(cmd.Args) == 0 {
|
||||||
cmd.Reply("Usage: /join <room>")
|
cmd.Reply("Usage: /join <room>")
|
||||||
|
Loading…
Reference in New Issue
Block a user