Пример #1
0
        public static Ticket GetTicket(GuildEngine guild, ulong Id)
        {
            Ticket ticket;

            guild.Tickets.TryGetValue(Id, out ticket);
            return(ticket);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        public static void ResetTickets(DiscordSocketClient client, GuildEngine guild)
        {
            foreach (var tickt in guild.Tickets.Values)
            {
                RemoveTicket(client, guild, tickt, true);
            }

            guild.Tickets.Clear();
        }
Пример #6
0
        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);
        }
Пример #7
0
 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);
     }
 }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
            }
        }
Пример #16
0
        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);
        }
Пример #17
0
 public static SetupMessage GetSetupMessageByTicket(GuildEngine guild, ulong TicketId)
 {
     return(guild.SetupMessages.Values.FirstOrDefault(x => x.TicketId == TicketId));
 }
Пример #18
0
        public Ticket CreateTicket(SocketGuild guild, string TicketName)
        {
            GuildEngine guildEngine = GetOrCreateGuild(guild);

            return(GuildManager.CreateNewTicket(DiscordClient, guildEngine, TicketName));
        }