diff --git a/commands-special.go b/commands-special.go
new file mode 100644
index 0000000..ef76e2f
--- /dev/null
+++ b/commands-special.go
@@ -0,0 +1,96 @@
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package main
+
+import (
+ skype "github.com/kelaresg/go-skypeapi"
+ "strings"
+ "time"
+)
+
+func (handler *CommandHandler) CommandSpecialMux(ce *CommandEvent) {
+ switch ce.Command {
+ case "special-create":
+ if !ce.User.HasSession() {
+ ce.Reply("You are not logged in. Use the `login` command to log into Skype.")
+ return
+ }
+ switch ce.Command {
+ case "special-create":
+ handler.CommandSpecialCreate(ce)
+ }
+ default:
+ ce.Reply("Unknown Command")
+ }
+}
+
+func (handler *CommandHandler) CommandSpecialHelp(ce *CommandEvent) {
+ cmdPrefix := ""
+ if ce.User.ManagementRoom != ce.RoomID || ce.User.IsRelaybot {
+ cmdPrefix = handler.bridge.Config.Bridge.CommandPrefix + " "
+ }
+
+ ce.Reply("* " + strings.Join([]string{
+ cmdPrefix + cmdSpecialCreateHelp,
+ }, "\n* "))
+}
+
+const cmdSpecialCreateHelp = `special-create <_topic_> <_member user id_>,... - Create a group.`
+
+func (handler *CommandHandler) CommandSpecialCreate(ce *CommandEvent) {
+ if len(ce.Args) < 2 {
+ ce.Reply("**Usage:** `special-create ,...`")
+ return
+ }
+
+ user := ce.User
+ topic := ce.Args[0]
+ members := skype.Members{}
+
+ // The user who created the group must be in the members and have "Admin" rights
+ userId := ce.User.Conn.UserProfile.Username
+ member2 := skype.Member{
+ Id: "8:" + userId,
+ Role: "Admin",
+ }
+
+ members.Members = append(members.Members, member2)
+ members.Properties = skype.Properties{
+ HistoryDisclosed: "true",
+ Topic: topic,
+ }
+
+ handler.log.Debugln("Create Group", topic, "with", members)
+ err := user.Conn.HandleGroupCreate(members)
+ inputArr := strings.Split(ce.Args[1], ",")
+ members = skype.Members{}
+ for _, memberId := range inputArr {
+ members.Members = append(members.Members, skype.Member{
+ Id: memberId,
+ Role: "Admin",
+ })
+ }
+ conversationId, ok := <-user.Conn.CreateChan
+ if ok {
+ err = user.Conn.AddMember(members, conversationId)
+ }
+ if err != nil {
+ ce.Reply("Please confirm that parameters is correct.")
+ } else {
+ ce.Reply("Syncing group list...")
+ time.Sleep(time.Duration(3) * time.Second)
+ ce.Reply("Syncing group list completed")
+ }
+}
+