Beispiel #1
0
 /// <summary>
 /// Part a channel
 /// </summary>
 /// <param name="chan">Channel object</param>
 /// <param name="user">User</param>
 /// <param name="host">Host</param>
 /// <param name="message">Message</param>
 /// <param name="origin"></param>
 public static void partChannel(config.channel chan, string user, string host, string message, string origin = "NULL")
 {
     try
     {
         if (origin == "NULL")
         {
             origin = chan.Name;
         }
         if (message == config.CommandPrefix + "drop")
         {
             if (chan.Users.IsApproved(user, host, "admin"))
             {
                 while (!core.FinishedJoining)
                 {
                     core.Log("Postponing request to part " + chan.Name + " because bot is still loading", true);
                     Thread.Sleep(2000);
                 }
                 chan.instance.irc.SendData("PART " + chan.Name + " :" + "dropped by " + user + " from " + origin);
                 Program.Log("Dropped " + chan.Name + " dropped by " + user + " from " + origin);
                 Thread.Sleep(100);
                 try
                 {
                     if (Directory.Exists(chan.LogDir))
                     {
                         Directory.Delete(chan.LogDir, true);
                     }
                 }
                 catch (Exception fail)
                 {
                     Log(fail.ToString(), true);
                 }
                 try
                 {
                     File.Delete(variables.config + Path.DirectorySeparatorChar + chan.Name + ".setting");
                     File.Delete(chan.Users.File);
                     if (File.Exists(variables.config + Path.DirectorySeparatorChar + chan.Name + ".list"))
                     {
                         File.Delete(variables.config + Path.DirectorySeparatorChar + chan.Name + ".list");
                     }
                     if (File.Exists(variables.config + Path.DirectorySeparatorChar + chan.Name + ".statistics"))
                     {
                         File.Delete(variables.config + Path.DirectorySeparatorChar + chan.Name + ".statistics");
                     }
                     lock (Module.module)
                     {
                         foreach (Module curr in Module.module)
                         {
                             try
                             {
                                 if (curr.working)
                                 {
                                     curr.Hook_ChannelDrop(chan);
                                 }
                             }
                             catch (Exception fail)
                             {
                                 core.Log("MODULE: exception at Hook_ChannelDrop in " + curr.Name, true);
                                 core.handleException(fail);
                             }
                         }
                     }
                 }
                 catch (Exception error)
                 {
                     Log(error.ToString(), true);
                 }
                 lock (config.channels)
                 {
                     chan.Remove();
                     config.channels.Remove(chan);
                 }
                 config.Save();
                 return;
             }
             irc._SlowQueue.DeliverMessage(messages.get("PermissionDenied", chan.Language), origin);
             return;
         }
         if (message == config.CommandPrefix + "part")
         {
             if (chan.Users.IsApproved(user, host, "admin"))
             {
                 while (!core.FinishedJoining)
                 {
                     core.Log("Postponing request to part " + chan.Name + " because bot is still loading", true);
                     Thread.Sleep(2000);
                 }
                 chan.instance.irc.SendData("PART " + chan.Name + " :" + "removed by " + user + " from " + origin);
                 Program.Log("Removed " + chan.Name + " removed by " + user + " from " + origin);
                 Thread.Sleep(100);
                 config.channels.Remove(chan);
                 config.Save();
                 return;
             }
             irc._SlowQueue.DeliverMessage(messages.get("PermissionDenied", chan.Language), origin);
         }
     }
     catch (Exception x)
     {
         handleException(x);
     }
 }