Guest User

Untitled

a guest
Jul 16th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Xml;
  6. using System.Reflection;
  7. using System.IO;
  8.  
  9. namespace Ham
  10. {
  11. public class Bot : IDisposable
  12. {
  13. public Hash hasher = new Hash();
  14. public Bot()
  15. {
  16. Console.WriteLine("Ham, created by Kode Joy ^.^");
  17.  
  18. XmlDocument config = new XmlDocument();
  19. config.Load("config.xml");
  20. foreach (XmlElement e in config.GetElementsByTagName("Network"))
  21. {
  22. Network n = new Network();
  23. networks.Add(n);
  24. n.CtcpVersion = "Ham, created by Kode Joy. ^.^";
  25. n.Name = e.Attributes["Name"].Value;
  26. n.Nickname = e.Attributes["Nick"].Value;
  27. n.Realname = e.Attributes["Realname"].Value;
  28. n.Username = e.Attributes["Username"].Value;
  29. if (e.HasAttribute("Password"))
  30. {
  31. n.UsePassword = true;
  32. n.Password = e.Attributes["Password"].Value;
  33. }
  34. else
  35. {
  36. n.UsePassword = false;
  37. }
  38. if (e.Attributes["Ssl"].Value == "true")
  39. {
  40. n.UseSsl = true;
  41. }
  42. else
  43. {
  44. n.UseSsl = false;
  45. }
  46. n.Port = int.Parse(e.Attributes["Port"].Value);
  47. n.Mode = e.Attributes["Modes"].Value;
  48. foreach (XmlElement f in e.GetElementsByTagName("Server"))
  49. {
  50. n.Servers.Add(f.Attributes["Address"].Value);
  51. }
  52. foreach (XmlElement f in e.GetElementsByTagName("Channel"))
  53. {
  54. n.Channels.Add(f.Attributes["Name"].Value);
  55. }
  56. n.OnBan += new Irc.BanEventHandler(OnBanHandler);
  57. n.OnChannelAction += new Irc.ActionEventHandler(OnChannelActionHandler);
  58. n.OnChannelActiveSynced += new Irc.IrcEventHandler(OnChannelActiveSyncedHandler);
  59. n.OnChannelMessage += new Irc.IrcEventHandler(OnChannelMessageHandler);
  60. n.OnChannelModeChange += new Irc.IrcEventHandler(OnChannelModeChangeHandler);
  61. n.OnChannelNotice += new Irc.IrcEventHandler(OnChannelNoticeHandler);
  62. n.OnChannelPassiveSynced += new Irc.IrcEventHandler(OnChannelPassiveSyncedHandler);
  63. n.OnConnected += new EventHandler(OnConnectedHandler);
  64. n.OnConnecting += new EventHandler(OnConnectingHandler);
  65. n.OnConnectionError += new EventHandler(OnConnectionErrorHandler);
  66. n.OnCtcpReply += new Irc.CtcpEventHandler(OnCtcpReplyHandler);
  67. n.OnCtcpRequest += new Irc.CtcpEventHandler(OnCtcpRequestHandler);
  68. n.OnDehalfop += new Irc.DehalfopEventHandler(OnDehalfopHandler);
  69. n.OnDeop += new Irc.DeopEventHandler(OnDeopHandler);
  70. n.OnDevoice += new Irc.DevoiceEventHandler(OnDevoiceHandler);
  71. n.OnDisconnected += new EventHandler(OnDisconnectedHandler);
  72. n.OnDisconnecting += new EventHandler(OnDisconnectingHandler);
  73. n.OnError += new Irc.ErrorEventHandler(OnErrorHandler);
  74. n.OnErrorMessage += new Irc.IrcEventHandler(OnErrorMessageHandler);
  75. n.OnHalfop += new Irc.HalfopEventHandler(OnHalfopHandler);
  76. n.OnInvite += new Irc.InviteEventHandler(OnInviteHandler);
  77. n.OnJoin += new Irc.JoinEventHandler(OnJoinHandler);
  78. n.OnKick += new Irc.KickEventHandler(OnKickHandler);
  79. n.OnModeChange += new Irc.IrcEventHandler(OnModeChangeHandler);
  80. n.OnMotd += new Irc.MotdEventHandler(OnMotdHandler);
  81. n.OnNames += new Irc.NamesEventHandler(OnNamesHandler);
  82. n.OnNickChange += new Irc.NickChangeEventHandler(OnNickChangeHandler);
  83. n.OnOp += new Irc.OpEventHandler(OnOpHandler);
  84. n.OnPart += new Irc.PartEventHandler(OnPartHandler);
  85. n.OnPing += new Irc.PingEventHandler(OnPingHandler);
  86. n.OnQueryAction += new Irc.ActionEventHandler(OnQueryActionHandler);
  87. n.OnQueryMessage += new Irc.IrcEventHandler(OnQueryMessageHandler);
  88. n.OnQueryNotice += new Irc.IrcEventHandler(OnQueryNoticeHandler);
  89. n.OnQuit += new Irc.QuitEventHandler(OnQuitHandler);
  90. n.OnRawMessage += new Irc.IrcEventHandler(OnRawMessageHandler);
  91. n.OnReadLine += new Irc.ReadLineEventHandler(OnReadLineHandler);
  92. n.OnRegistered += new EventHandler(OnRegisteredHandler);
  93. n.OnTopic += new Irc.TopicEventHandler(OnTopicHandler);
  94. n.OnTopicChange += new Irc.TopicChangeEventHandler(OnTopicChangeHandler);
  95. n.OnUnban += new Irc.UnbanEventHandler(OnUnbanHandler);
  96. n.OnUserModeChange += new Irc.IrcEventHandler(OnUserModeChangeHandler);
  97. n.OnVoice += new Irc.VoiceEventHandler(OnVoiceHandler);
  98. n.OnWho += new Irc.WhoEventHandler(OnWhoHandler);
  99. n.OnWriteLine += new Irc.WriteLineEventHandler(OnWriteLineHandler);
  100. }
  101. #region " Load Plugins "
  102. object[] o = { this };
  103. foreach (FileInfo f in new DirectoryInfo("Plugins").GetFiles())
  104. if (f.Extension == ".dll")
  105. {
  106. Console.WriteLine("Loading Plugins from Assembly '" + f.Name + "' ...");
  107. Assembly a = Assembly.LoadFile(f.FullName);
  108.  
  109. foreach (Type t in a.GetTypes())
  110. if (t.BaseType == typeof(Plugin))
  111. {
  112. Plugin p = (Plugin)Activator.CreateInstance(t, o);
  113. plugins.Add(p);
  114. }
  115. }
  116. else
  117. {
  118. Console.WriteLine("I found a file that is not a dll in the plugins folder! It's named \"" +
  119. f.Name + "\" Please remove it!");
  120. }
  121.  
  122. XmlNode hai = config.SelectSingleNode("//Ham/Settings");
  123. //Get all the settings
  124. XmlNodeList h = hai.ChildNodes;
  125.  
  126. Console.WriteLine("===============================================================================");
  127. #endregion
  128. }
  129.  
  130. ~Bot()
  131. {
  132. Dispose();
  133. }
  134.  
  135. public void Dispose()
  136. {
  137. //DisconnectAll();
  138. }
  139.  
  140. #region " Connect/Disconnect "
  141. public void ConnectAll()
  142. {
  143. foreach (Network n in Networks)
  144. n.Connect();
  145. }
  146.  
  147. public void DisconnectAll()
  148. {
  149. foreach (Network n in Networks)
  150. n.Disconnect();
  151. }
  152. #endregion
  153.  
  154. #region " Methods "
  155. public Network GetNetworkByName(string name)
  156. {
  157. foreach (Network n in networks)
  158. if (n.Name == name)
  159. return n;
  160. throw new NetworkNotFoundException();
  161. }
  162.  
  163. public void SaveConfiguration()
  164. {
  165. config.Save("config.xml");
  166. }
  167. #endregion
  168.  
  169. #region " Properties "
  170. XmlDocument config;
  171. public XmlElement Config
  172. {
  173. get
  174. {
  175. return config["Abbot"];
  176. }
  177. }
  178.  
  179. List<Network> networks = new List<Network>();
  180. public List<Network> Networks
  181. {
  182. get
  183. {
  184. return networks;
  185. }
  186. }
  187.  
  188. List<Plugin> plugins = new List<Plugin>();
  189. public List<Plugin> Plugins
  190. {
  191. get
  192. {
  193. return plugins;
  194. }
  195. }
  196. #endregion
  197.  
  198. #region " Global Event Handles "
  199. void OnBanHandler(object sender, Irc.BanEventArgs e)
  200. {
  201. if (OnBan != null)
  202. OnBan((Network)sender, e);
  203. }
  204.  
  205. void OnChannelActionHandler(object sender, Irc.ActionEventArgs e)
  206. {
  207. if (OnChannelAction != null)
  208. OnChannelAction((Network)sender, e);
  209. }
  210.  
  211. void OnChannelActiveSyncedHandler(object sender, Irc.IrcEventArgs e)
  212. {
  213. if (OnChannelActiveSynced != null)
  214. OnChannelActiveSynced((Network)sender, e);
  215. }
  216.  
  217. void OnChannelMessageHandler(object sender, Irc.IrcEventArgs e)
  218. {
  219. if (OnChannelMessage != null)
  220. OnChannelMessage((Network)sender, e);
  221. }
  222.  
  223. void OnChannelModeChangeHandler(object sender, Irc.IrcEventArgs e)
  224. {
  225. if (OnChannelModeChange != null)
  226. OnChannelModeChange((Network)sender, e);
  227. }
  228.  
  229. void OnChannelNoticeHandler(object sender, Irc.IrcEventArgs e)
  230. {
  231. if (OnChannelNotice != null)
  232. OnChannelNotice((Network)sender, e);
  233. }
  234.  
  235. void OnChannelPassiveSyncedHandler(object sender, Irc.IrcEventArgs e)
  236. {
  237. if (OnChannelPassiveSynced != null)
  238. OnChannelPassiveSynced((Network)sender, e);
  239. }
  240.  
  241. void OnConnectedHandler(object sender, EventArgs e)
  242. {
  243. if (OnConnected != null)
  244. OnConnected((Network)sender, e);
  245. }
  246.  
  247. void OnConnectingHandler(object sender, EventArgs e)
  248. {
  249. if (OnConnecting != null)
  250. OnConnecting((Network)sender, e);
  251. }
  252.  
  253. void OnConnectionErrorHandler(object sender, EventArgs e)
  254. {
  255. if (OnConnectionError != null)
  256. OnConnectionError((Network)sender, e);
  257. }
  258.  
  259. void OnCtcpReplyHandler(object sender, Irc.IrcEventArgs e)
  260. {
  261. if (OnCtcpReply != null)
  262. OnCtcpReply((Network)sender, e);
  263. }
  264.  
  265. void OnCtcpRequestHandler(object sender, Irc.IrcEventArgs e)
  266. {
  267. if (OnCtcpRequest != null)
  268. OnCtcpRequest((Network)sender, e);
  269. }
  270.  
  271. void OnDehalfopHandler(object sender, Irc.DehalfopEventArgs e)
  272. {
  273. if (OnDehalfop != null)
  274. OnDehalfop((Network)sender, e);
  275. }
  276.  
  277. void OnDeopHandler(object sender, Irc.DeopEventArgs e)
  278. {
  279. if (OnDeop != null)
  280. OnDeop((Network)sender, e);
  281. }
  282.  
  283. void OnDevoiceHandler(object sender, Irc.DevoiceEventArgs e)
  284. {
  285. if (OnDevoice != null)
  286. OnDevoice((Network)sender, e);
  287. }
  288.  
  289. void OnDisconnectedHandler(object sender, EventArgs e)
  290. {
  291. if (OnDisconnected != null)
  292. OnDisconnected((Network)sender, e);
  293. }
  294.  
  295. void OnDisconnectingHandler(object sender, EventArgs e)
  296. {
  297. if (OnDisconnecting != null)
  298. OnDisconnecting((Network)sender, e);
  299. }
  300.  
  301. void OnErrorHandler(object sender, Irc.ErrorEventArgs e)
  302. {
  303. if (OnError != null)
  304. OnError((Network)sender, e);
  305. }
  306.  
  307. void OnErrorMessageHandler(object sender, Irc.IrcEventArgs e)
  308. {
  309. if (OnErrorMessage != null)
  310. OnErrorMessage((Network)sender, e);
  311. }
  312.  
  313. void OnHalfopHandler(object sender, Irc.HalfopEventArgs e)
  314. {
  315. if (OnHalfop != null)
  316. OnHalfop((Network)sender, e);
  317. }
  318.  
  319. void OnInviteHandler(object sender, Irc.InviteEventArgs e)
  320. {
  321. if (OnInvite != null)
  322. OnInvite((Network)sender, e);
  323. }
  324.  
  325. void OnJoinHandler(object sender, Irc.JoinEventArgs e)
  326. {
  327. if (OnJoin != null)
  328. OnJoin((Network)sender, e);
  329. }
  330.  
  331. void OnKickHandler(object sender, Irc.KickEventArgs e)
  332. {
  333. if (OnKick != null)
  334. OnKick((Network)sender, e);
  335. }
  336.  
  337. void OnModeChangeHandler(object sender, Irc.IrcEventArgs e)
  338. {
  339. if (OnModeChange != null)
  340. OnModeChange((Network)sender, e);
  341. }
  342.  
  343. void OnMotdHandler(object sender, Irc.MotdEventArgs e)
  344. {
  345. if (OnMotd != null)
  346. OnMotd((Network)sender, e);
  347. }
  348.  
  349. void OnNamesHandler(object sender, Irc.NamesEventArgs e)
  350. {
  351. if (OnNames != null)
  352. OnNames((Network)sender, e);
  353. }
  354.  
  355. void OnNickChangeHandler(object sender, Irc.NickChangeEventArgs e)
  356. {
  357. if (OnNickChange != null)
  358. OnNickChange((Network)sender, e);
  359. }
  360.  
  361. void OnOpHandler(object sender, Irc.OpEventArgs e)
  362. {
  363. if (OnOp != null)
  364. OnOp((Network)sender, e);
  365. }
  366.  
  367. void OnPartHandler(object sender, Irc.PartEventArgs e)
  368. {
  369. if (OnPart != null)
  370. OnPart((Network)sender, e);
  371. }
  372.  
  373. void OnPingHandler(object sender, Irc.PingEventArgs e)
  374. {
  375. if (OnPing != null)
  376. OnPing((Network)sender, e);
  377. }
  378.  
  379. void OnQueryActionHandler(object sender, Irc.ActionEventArgs e)
  380. {
  381. if (OnQueryAction != null)
  382. OnQueryAction((Network)sender, e);
  383. }
  384.  
  385. void OnQueryMessageHandler(object sender, Irc.IrcEventArgs e)
  386. {
  387. if (OnQueryMessage != null)
  388. OnQueryMessage((Network)sender, e);
  389. }
  390.  
  391. void OnQueryNoticeHandler(object sender, Irc.IrcEventArgs e)
  392. {
  393. if (OnQueryNotice != null)
  394. OnQueryNotice((Network)sender, e);
  395. }
  396.  
  397. void OnQuitHandler(object sender, Irc.QuitEventArgs e)
  398. {
  399. if (OnQuit != null)
  400. OnQuit((Network)sender, e);
  401. }
  402.  
  403. void OnRawMessageHandler(object sender, Irc.IrcEventArgs e)
  404. {
  405. if (OnRawMessage != null)
  406. OnRawMessage((Network)sender, e);
  407. }
  408.  
  409. void OnReadLineHandler(object sender, Irc.ReadLineEventArgs e)
  410. {
  411. if (OnReadLine != null)
  412. OnReadLine((Network)sender, e);
  413. }
  414.  
  415. void OnRegisteredHandler(object sender, EventArgs e)
  416. {
  417. if (OnRegistered != null)
  418. OnRegistered((Network)sender, e);
  419. }
  420.  
  421. void OnTopicHandler(object sender, Irc.TopicEventArgs e)
  422. {
  423. if (OnTopic != null)
  424. OnTopic((Network)sender, e);
  425. }
  426.  
  427. void OnTopicChangeHandler(object sender, Irc.TopicChangeEventArgs e)
  428. {
  429. if (OnTopicChange != null)
  430. OnTopicChange((Network)sender, e);
  431. }
  432.  
  433. void OnUnbanHandler(object sender, Irc.UnbanEventArgs e)
  434. {
  435. if (OnUnban != null)
  436. OnUnban((Network)sender, e);
  437. }
  438.  
  439. void OnUserModeChangeHandler(object sender, Irc.IrcEventArgs e)
  440. {
  441. if (OnUserModeChange != null)
  442. OnUserModeChange((Network)sender, e);
  443. }
  444.  
  445. void OnVoiceHandler(object sender, Irc.VoiceEventArgs e)
  446. {
  447. if (OnVoice != null)
  448. OnVoice((Network)sender, e);
  449. }
  450.  
  451. void OnWhoHandler(object sender, Irc.WhoEventArgs e)
  452. {
  453. if (OnWho != null)
  454. OnWho((Network)sender, e);
  455. }
  456.  
  457. void OnWriteLineHandler(object sender, Irc.WriteLineEventArgs e)
  458. {
  459. if (OnWriteLine != null)
  460. OnWriteLine((Network)sender, e);
  461. }
  462. #endregion
  463.  
  464. #region " Events "
  465. public event EventHandler OnRegistered;
  466. public event PingEventHandler OnPing;
  467. public event IrcEventHandler OnRawMessage;
  468. public event ErrorEventHandler OnError;
  469. public event IrcEventHandler OnErrorMessage;
  470. public event JoinEventHandler OnJoin;
  471. public event NamesEventHandler OnNames;
  472. public event PartEventHandler OnPart;
  473. public event QuitEventHandler OnQuit;
  474. public event KickEventHandler OnKick;
  475. public event InviteEventHandler OnInvite;
  476. public event BanEventHandler OnBan;
  477. public event UnbanEventHandler OnUnban;
  478. public event OpEventHandler OnOp;
  479. public event DeopEventHandler OnDeop;
  480. public event HalfopEventHandler OnHalfop;
  481. public event DehalfopEventHandler OnDehalfop;
  482. public event VoiceEventHandler OnVoice;
  483. public event DevoiceEventHandler OnDevoice;
  484. public event WhoEventHandler OnWho;
  485. public event MotdEventHandler OnMotd;
  486. public event TopicEventHandler OnTopic;
  487. public event TopicChangeEventHandler OnTopicChange;
  488. public event NickChangeEventHandler OnNickChange;
  489. public event IrcEventHandler OnModeChange;
  490. public event IrcEventHandler OnUserModeChange;
  491. public event IrcEventHandler OnChannelModeChange;
  492. public event IrcEventHandler OnChannelMessage;
  493. public event ActionEventHandler OnChannelAction;
  494. public event IrcEventHandler OnChannelNotice;
  495. public event IrcEventHandler OnChannelActiveSynced;
  496. public event IrcEventHandler OnChannelPassiveSynced;
  497. public event IrcEventHandler OnQueryMessage;
  498. public event ActionEventHandler OnQueryAction;
  499. public event IrcEventHandler OnQueryNotice;
  500. public event IrcEventHandler OnCtcpRequest;
  501. public event IrcEventHandler OnCtcpReply;
  502. public event ReadLineEventHandler OnReadLine;
  503. public event WriteLineEventHandler OnWriteLine;
  504. public event EventHandler OnConnecting;
  505. public event EventHandler OnConnected;
  506. public event EventHandler OnDisconnecting;
  507. public event DisconnectedEventHandler OnDisconnected;
  508. public event EventHandler OnConnectionError;
  509. #endregion
  510. }
  511.  
  512. #region " Delegates "
  513. public delegate void IrcEventHandler(Network network, Irc.IrcEventArgs e);
  514. public delegate void ActionEventHandler(Network network, Irc.ActionEventArgs e);
  515. public delegate void ErrorEventHandler(Network network, Irc.ErrorEventArgs e);
  516. public delegate void PingEventHandler(Network network, Irc.PingEventArgs e);
  517. public delegate void KickEventHandler(Network network, Irc.KickEventArgs e);
  518. public delegate void JoinEventHandler(Network network, Irc.JoinEventArgs e);
  519. public delegate void NamesEventHandler(Network network, Irc.NamesEventArgs e);
  520. public delegate void PartEventHandler(Network network, Irc.PartEventArgs e);
  521. public delegate void InviteEventHandler(Network network, Irc.InviteEventArgs e);
  522. public delegate void OpEventHandler(Network network, Irc.OpEventArgs e);
  523. public delegate void DeopEventHandler(Network network, Irc.DeopEventArgs e);
  524. public delegate void HalfopEventHandler(Network network, Irc.HalfopEventArgs e);
  525. public delegate void DehalfopEventHandler(Network network, Irc.DehalfopEventArgs e);
  526. public delegate void VoiceEventHandler(Network network, Irc.VoiceEventArgs e);
  527. public delegate void DevoiceEventHandler(Network network, Irc.DevoiceEventArgs e);
  528. public delegate void BanEventHandler(Network network, Irc.BanEventArgs e);
  529. public delegate void UnbanEventHandler(Network network, Irc.UnbanEventArgs e);
  530. public delegate void TopicEventHandler(Network network, Irc.TopicEventArgs e);
  531. public delegate void TopicChangeEventHandler(Network network, Irc.TopicChangeEventArgs e);
  532. public delegate void NickChangeEventHandler(Network network, Irc.NickChangeEventArgs e);
  533. public delegate void QuitEventHandler(Network network, Irc.QuitEventArgs e);
  534. public delegate void WhoEventHandler(Network network, Irc.WhoEventArgs e);
  535. public delegate void MotdEventHandler(Network network, Irc.MotdEventArgs e);
  536. public delegate void ReadLineEventHandler(Network network, Irc.ReadLineEventArgs e);
  537. public delegate void WriteLineEventHandler(Network network, Irc.WriteLineEventArgs e);
  538. public delegate void DisconnectedEventHandler(Network network, EventArgs e);
  539. #endregion
  540. }
Add Comment
Please, Sign In to add comment