コード例 #1
0
ファイル: Program.cs プロジェクト: Saadbg/TicketBot
        private static Task Client_MessageReceived(SocketMessage message)
        {
            var channel = message.Channel as SocketTextChannel;

            if (message == null || channel == null)
            {
                return(Task.CompletedTask);
            }

            var guild = channel.Guild;

            if (guild == null)
            {
                return(Task.CompletedTask);
            }

            if ((message.Author as SocketGuildUser).Roles.All(x => !x.Permissions.Administrator) && message.Author.Id != guild.Owner.Id)
            {
                return(Task.CompletedTask);
            }

            if (message.Content.StartsWith("$help"))
            {
                var helpEmbedBuilder = new EmbedBuilder()
                {
                    Author = new EmbedAuthorBuilder()
                    {
                        Name = $"Ticket Tool ~ Commands", IconUrl = @"https://cdn.discordapp.com/avatars/557628352828014614/04cdd55608f6f9942c9ab3bbcab3932c.png?size=512", Url = @"https://github.com/Saadbg/TicketBot"
                    },
                    Timestamp = DateTime.Now,
                    Footer    = new EmbedFooterBuilder()
                    {
                        Text = "Commands tab"
                    },
                    Description =
                        "**Prefix** : **$** \n \n"
                        + "**setup** : Creates a ticket. \n"
                        + "     ~exemple: \"$setup ***TicketName***  #channel ***A message displayed***  \" \n \n"
                        + "**roles** : manages mentionned roles permissions \n"
                        + "    -**add** : adds roles to tickets staff. \n"
                        + "    -**remove** : removes roles from tickets staff. \n"
                        + "     ~exemple: \"$roles ***add/remove*** ***@Role1  @Role2  @Role3*** \" \n \n"
                        + "**lang** : manages the display language \n"
                        + "    -**fr/french** : changes the language to French. \n"
                        + "    -**en/english** : changes the language to English. \n"
                        + "     ~exemple: \"$lang ***en/fr*** \" \n \n"
                        + "**name** : Changes the ticket support team name \n"
                        + "     ~exemple: \"$name ***New name*** \" \n \n"
                        + "**icon** : Changes the ticket support team icon \n"
                        + "     ~exemple: \"$icon ***http://newIconUrl.com/Icon.jpg*** \" \n \n"
                };
                channel.SendMessageAsync("", false, helpEmbedBuilder.Build());
            }

            else if (message.Content.StartsWith("$setup "))
            {
                var CommandArguments = message.Content.Split(' ');

                if (CommandArguments.Length < 3)
                {
                    return(Task.CompletedTask);
                }

                var commandIdentifier = CommandArguments[0];
                var ticketName        = CommandArguments[1];
                var Message           = message.Content.Replace($"$setup {ticketName} {CommandArguments[2]} ", "");

                if (message.MentionedChannels.Count != 1)
                {
                    return(Task.CompletedTask);
                }

                var mentionnedChannel = message.MentionedChannels.FirstOrDefault();
                mainManager.SetupMessage(ticketName, Message, guild, mentionnedChannel as SocketTextChannel);

                channel.SendMessageAsync($"Ticket {ticketName} Created.");
            }

            else if (message.Content.ToLower().StartsWith("$roles add "))
            {
                var mentionnedRoles = message.MentionedRoles;
                if (mentionnedRoles != null && mentionnedRoles.Any())
                {
                    GuildManager.AddModerationCommand(guild, mentionnedRoles.Where(x => !x.IsEveryone).Select(x => x.Id).ToArray());
                }
                channel.SendMessageAsync($"Roles Added.");
            }

            else if (message.Content.ToLower().StartsWith("$roles remove "))
            {
                var mentionnedRoles = message.MentionedRoles;
                if (mentionnedRoles != null && mentionnedRoles.Any())
                {
                    GuildManager.RemoveModerationCommand(guild, mentionnedRoles.Where(x => !x.IsEveryone).Select(x => x.Id).ToArray());
                }
                channel.SendMessageAsync($"Roles Removed.");
            }

            else if (message.Content.ToLower().StartsWith("$lang fr") || message.Content.ToLower().StartsWith("$lang french"))
            {
                GuildManager.LangChangeCommand(guild, LangEnum.Frensh);
                channel.SendMessageAsync($"Langage changé en Français.");
            }

            else if (message.Content.ToLower().StartsWith("$lang en") || message.Content.ToLower().StartsWith("$lang english"))
            {
                GuildManager.LangChangeCommand(guild, LangEnum.English);
                channel.SendMessageAsync($"Language changed to English.");
            }

            else if (message.Content.StartsWith("$icon "))
            {
                string IconUrl = message.Content.Replace("$icon ", "");
                GuildManager.IconChangeCommand(guild, IconUrl);
                channel.SendMessageAsync($"Icon changed to {IconUrl}.");
            }

            else if (message.Content.StartsWith("$name "))
            {
                string name = message.Content.Replace("$name ", "");
                GuildManager.NameChangeCommand(guild, name);
                channel.SendMessageAsync($"Name changed to {name}.");
            }

            return(Task.CompletedTask);
        }