public static Ticket GetTicket(GuildEngine guild, ulong Id) { Ticket ticket; guild.Tickets.TryGetValue(Id, out ticket); return(ticket); }
public void SetupMessage(string TicketName, string Message, SocketGuild guild, SocketTextChannel channel) { GuildEngine guildE = GetOrCreateGuild(guild); var ticket = CreateTicket(guild, TicketName); EmbedBuilder builder = new EmbedBuilder() { Author = new EmbedAuthorBuilder() { Name = $"Ticket Tool ~ {TicketName}", IconUrl = @"https://cdn.discordapp.com/avatars/557628352828014614/04cdd55608f6f9942c9ab3bbcab3932c.png?size=512", Url = @"https://github.com/Saadbg/TicketBot" }, Description = Message, Timestamp = DateTime.Now, Footer = new EmbedFooterBuilder() { Text = $"{guildE.Name} Support", IconUrl = guildE.IconUrl } }; var message = channel.SendMessageAsync("", false, builder.Build()); message.Wait(); message.Result.AddReactionAsync(TicketEmote); GuildManager.CreateSetupMessage(guildE, message.Result.Id, ticket.Id, channel.Id); }
public static void HandleGuildCreationValidMessage(Client client, GuildCreationValidMessage message) { if (client.Character.Guild != null) { return; } var Guilde = new GuildEngine() { Name = message.guildName, Level = 200, Xp = 354658435241, GuildEmblems = message.guildEmblem }; client.Character.Guild = Guilde; client.Character.GuildRank = 1; client.Send(new GuildCreationResultMessage((sbyte)GuildCreationResultEnum.GUILD_CREATE_OK)); client.Character.Guild.AddCharacter(client.Character); client.Send(new GuildJoinedMessage(Guilde.Name, Guilde.GuildEmblems, (uint)client.Character.GuildRank)); /*client.Send(new GuildInformationsMembersMessage(new[] * { * new GuildMember(client.Character.Id, client.Character.Name, client.Character.Level, (sbyte)client.Character.Breed, client.Character.Sex, 1, 0, 5, 1, 1, (sbyte)client.Character.AlignmentSide, (ushort)Functions.ReturnUnixTimeStamp(client.Character.LastUsage.Value)), * }));*/ client.Send(new GuildInformationsMembersMessage(Guilde.GetGuildMembers())); client.Send(new GuildInformationsGeneralMessage(true, (sbyte)Guilde.Level, Guilde.Xp + 120, Guilde.Xp, Guilde.Xp + 120)); }
public static void RemoveTicket(DiscordSocketClient client, GuildEngine guild, ulong TicketId, bool clear) { if (guild.Tickets.ContainsKey(TicketId)) { var ticket = GetTicket(guild, TicketId); RemoveTicket(client, guild, ticket, clear); } }
public static void ResetTickets(DiscordSocketClient client, GuildEngine guild) { foreach (var tickt in guild.Tickets.Values) { RemoveTicket(client, guild, tickt, true); } guild.Tickets.Clear(); }
public static Ticket CreateNewTicket(DiscordSocketClient client, GuildEngine guild, string Name) { var ticketId = PopId(guild); Ticket ticket = new Ticket(ticketId, guild.Id, Name); TicketManager.GetOrCreateCategoryChannel(client, ticket); guild.Tickets.Add(ticketId, ticket); return(ticket); }
public static SetupMessage GetSetupMessage(GuildEngine guild, ulong MessageId) { if (guild.SetupMessages.ContainsKey(MessageId)) { SetupMessage m_message; guild.SetupMessages.TryGetValue(MessageId, out m_message); return(m_message); } else { return(null); } }
public static SetupMessage CreateSetupMessage(GuildEngine guild, ulong messageId, ulong ticketId, ulong channelId) { if (guild.SetupMessages.ContainsKey(messageId)) { SetupMessage m_message; guild.SetupMessages.TryGetValue(messageId, out m_message); return(m_message); } SetupMessage message = new SetupMessage { MessageId = messageId, TicketId = ticketId, ChannelId = channelId }; guild.SetupMessages.Add(messageId, message); return(message); }
public static ulong PopId(GuildEngine guild) { ulong newId = 0; if (guild.Tickets == null) { guild.Tickets = new Dictionary <ulong, Ticket>(); } while (guild.Tickets.ContainsKey(newId)) { newId++; } return(newId); }
public static GuildMap MapGuild(GuildEngine guild) { var map = new GuildMap() { Id = guild.Id, Name = guild.Name, Lang = guild.Lang, IconUrl = guild.IconUrl, TicketsBin = FormatterExtensions.ToBinary(guild.Tickets.Values.ToList()), SetupMessagesBin = FormatterExtensions.ToBinary(guild.SetupMessages.Values.ToList()), RolesMessagesBin = FormatterExtensions.ToBinary(guild.RolesMessagesData.Values.ToList()), PermittedRolesCSV = guild.PermittedRoles.ToCSV(";") }; return(map); }
public static GuildEngine UnMapGuild(GuildMap database) { var tickets = FormatterExtensions.ToObject <List <Ticket> >(database.TicketsBin); var smessages = FormatterExtensions.ToObject <List <SetupMessage> >(database.SetupMessagesBin); var sroles = FormatterExtensions.ToObject <List <RolesMessageData> >(database.RolesMessagesBin); GuildEngine info = new GuildEngine(database.Id, database.Name) { Lang = database.Lang, IconUrl = database.IconUrl, Tickets = tickets.ToDictionary(x => x.Id), SetupMessages = smessages.ToDictionary(x => x.MessageId), RolesMessagesData = sroles.ToDictionary(x => x.MessageId), PermittedRoles = FormatterExtensions.FromCSV <ulong>(database.PermittedRolesCSV, ";").ToList() }; return(info); }
public GuildEngine GetOrCreateGuild(SocketGuild guild) { GuildEngine guildEngine; if (guilds.ContainsKey(guild.Id)) { guilds.TryGetValue(guild.Id, out guildEngine); return(guildEngine); } if (!Directory.Exists($"./Transcripts/{guild.Id}")) { Directory.CreateDirectory($"./Transcripts/{guild.Id}"); } guildEngine = new GuildEngine(guild.Id, guild.Name); guilds.Add(guild.Id, guildEngine); NewGuilds.Add(guildEngine); return(guildEngine); }
public void HandleSetupMessage(GuildEngine guildE, SetupMessage setupMessage, SocketReaction reaction, Discord.Rest.RestUserMessage message) { var user = reaction.User.Value as SocketGuildUser; var ticket = GetTicket(guildE.Id, setupMessage.TicketId); if (ticket == null) { return; } message.RemoveReactionAsync(reaction.Emote, user); if (ticket.ActiveChildChannels.Values.Any(x => x.UserId == user.Id)) { return; } TicketManager.CreateNewChild(DiscordClient, user, ticket); }
public static void RemoveTicket(DiscordSocketClient client, GuildEngine guild, Ticket ticket, bool clear = false) { TicketManager.DeleteTicket(client, ticket); var setmessage = GetSetupMessageByTicket(guild, ticket.Id); if (setmessage != null) { guild.SetupMessages.Remove(setmessage.MessageId); } if (clear) { return; } if (!guild.Tickets.ContainsKey(ticket.Id)) { return; } guild.Tickets.Remove(ticket.Id); }
public void HandleReaction(SocketGuild guild, SocketGuildUser user, SocketReaction reaction) { if (user.IsBot) { return; } var Rmessage = (reaction.Channel as SocketTextChannel).GetMessageAsync(reaction.MessageId); Rmessage.Wait(); var messge = Rmessage.Result; var message = messge as Discord.Rest.RestUserMessage; if (message == null) { return; } GuildEngine guildE = GetOrCreateGuild(guild); var setupMessage = GuildManager.GetSetupMessage(guildE, reaction.MessageId); if (setupMessage != null) { HandleSetupMessage(guildE, setupMessage, reaction, message); return; } var child = GuildManager.GetChildByReactionMessageId(guildE, reaction.MessageId); if (child != null) { HandleChildReaction(child, reaction, message); } }
public static TicketChild GetChildByReactionMessageId(GuildEngine guild, ulong messageId) { var ticket = guild.Tickets.SelectMany(x => x.Value.ActiveChildChannels.Values).FirstOrDefault(x => messageId == x.LockMessageId || messageId == x.MainMessageId); return(ticket); }
public static SetupMessage GetSetupMessageByTicket(GuildEngine guild, ulong TicketId) { return(guild.SetupMessages.Values.FirstOrDefault(x => x.TicketId == TicketId)); }
public Ticket CreateTicket(SocketGuild guild, string TicketName) { GuildEngine guildEngine = GetOrCreateGuild(guild); return(GuildManager.CreateNewTicket(DiscordClient, guildEngine, TicketName)); }