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.
|
||||
func (c *Container) JoinRoom(roomID, server string) (*rooms.Room, error) {
|
||||
resp, err := c.client.JoinRoom(roomID, server, nil)
|
||||
|
@ -90,6 +90,7 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor {
|
||||
"quit": cmdQuit,
|
||||
"clearcache": cmdClearCache,
|
||||
"leave": cmdLeave,
|
||||
"create": cmdCreateRoom,
|
||||
"join": cmdJoin,
|
||||
"kick": cmdKick,
|
||||
"ban": cmdBan,
|
||||
|
@ -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>")
|
||||
|
Loading…
Reference in New Issue
Block a user