private void OnNews(BotShell bot, CommandArgs e) { try { using (IDbCommand command = this._database.Connection.CreateCommand()) { RichTextWindow window = new RichTextWindow(bot); window.AppendTitle(); bool titleSticky = false; bool titleNormal = false; Int64 lastPost = 0; command.CommandText = "SELECT [news_id], [news_name] , [news_date], [news_text], [news_icon], [news_sticky] FROM [news] ORDER BY [news_sticky] DESC, [news_date] DESC LIMIT 15"; IDataReader reader = command.ExecuteReader(); while (reader.Read()) { if (reader.GetInt64(2) > lastPost) { lastPost = reader.GetInt64(2); } if (reader.GetInt64(5) == 1) { if (!titleSticky) { window.AppendHeader("Sticky News Posts"); window.AppendLineBreak(); titleSticky = true; } } else { if (!titleNormal) { window.AppendHeader("Current News Posts"); window.AppendLineBreak(); titleNormal = true; } } window.AppendBotCommandStart("news id " + reader.GetInt64(0).ToString()); if (reader.GetInt64(5) == 1) { window.AppendImage("GFX_GUI_WINDOW_ICON_POPUP"); } else { window.AppendImage(_iconList[reader.GetInt64(4)]); } window.AppendLinkEnd(); window.AppendHighlight(" " + Format.DateTime(reader.GetInt64(2), FormatStyle.Compact) + " GMT by " + reader.GetString(1)); window.AppendLineBreak(true); window.AppendNormal(reader.GetString(3)); if ((reader.GetString(1) == e.Sender || bot.Users.Authorized(e.Sender, UserLevel.Admin))) { window.AppendLineBreak(true); window.AppendNormal("["); window.AppendBotCommand("Remove", "news remove " + reader.GetInt64(0)); window.AppendNormal("]"); } window.AppendLineBreak(2); } if (lastPost == 0) { bot.SendReply(e, "There's currently no news"); return; } else { bot.SendReply(e, "News last edited on " + HTML.CreateColorString(bot.ColorHeaderHex, Format.DateTime(lastPost, FormatStyle.Compact)) + " »» ", window); return; } } } catch { bot.SendReply(e, "Error during news fetching. Please try again later"); return; } }
private void OnNewsID(BotShell bot, CommandArgs e) { double d; if (e.Args.Length == 0) { bot.SendReply(e, "Correct Usage: news id [id]"); return; } if (double.TryParse(e.Args[0], System.Globalization.NumberStyles.Integer, _cultureInfo, out d) == true) { try { using (IDbCommand command = this._database.Connection.CreateCommand()) { command.CommandText = "SELECT [news_name], [news_sticky] FROM [news] WHERE [news_id] = " + e.Args[0]; IDataReader reader = command.ExecuteReader(); if (reader.Read()) { if ((reader.GetString(0) == e.Sender || bot.Users.Authorized(e.Sender, UserLevel.Admin)) && e.Type == CommandType.Tell) { RichTextWindow window = new RichTextWindow(bot); window.AppendTitle("News Options"); window.AppendHighlight("Sticky: "); if (reader.GetInt64(1) == 1) { window.AppendColorString(RichTextWindow.ColorGreen, "Enabled"); window.AppendNormal(" ["); window.AppendBotCommand("Disable", "news sticky " + e.Args[0] + " 0"); window.AppendNormal("]"); } else { window.AppendColorString(RichTextWindow.ColorOrange, "Disabled"); window.AppendNormal(" ["); window.AppendBotCommand("Enable", "news sticky " + e.Args[0] + " 1"); window.AppendNormal("]"); } window.AppendLineBreak(2); window.AppendHeader("Icon"); if (reader.GetInt64(1) == 1) { window.AppendNormal("There are no icons available for sticky posts"); } else { int counter = 0; foreach (string Icon in _iconList) { window.AppendBotCommandStart("news icon " + e.Args[0] + " " + counter.ToString()); window.AppendImage(Icon); window.AppendLinkEnd(); window.AppendNormal(" "); counter = counter + 1; } } bot.SendReply(e, "News Options »» ", window); return; } else { bot.SendReply(e, "You don't own this news post"); return; } } else { bot.SendReply(e, "No such news post"); return; } } } catch { bot.SendReply(e, "Error during news fetching. Please try again later"); return; } } bot.SendReply(e, "Invalid ID"); }