コード例 #1
0
ファイル: Message.cs プロジェクト: byBlurr/Globals
        public static async Task PostGlobalMessageAsync(SocketCommandContext Context)
        {
            ulong  user_id     = Context.User.Id;
            string user_name   = Context.User.Username;
            string user_rank   = "";
            string user_server = Context.Guild.Name;
            string user_image  = Context.User.GetAvatarUrl();

            string message_text = Context.Message.Content;
            IReadOnlyCollection <SocketUser> message_mentions = Context.Message.MentionedUsers;
            string message_channel = "";
            string message_footer  = Context.Message.Timestamp.ToString();

            IReadOnlyCollection <Attachment> message_attachments = Context.Message.Attachments;
            List <string> message_images = new List <string>();

            foreach (Attachment attachment in message_attachments)
            {
                if (attachment.Filename.EndsWith(".png") || attachment.Filename.EndsWith(".jpg") || attachment.Filename.EndsWith(".jpeg") || attachment.Filename.EndsWith(".gif"))
                {
                    message_images.Add(Image.SaveImage(attachment.Filename, attachment.Url));
                    Console.WriteLine(Image.SaveImage(attachment.Filename, attachment.Url));
                }
            }

            //if (message_text.Length == 0) message_text = "_Find attachment above._";

            string globals_id = "";

            var dbCon = DBConnection.Instance();

            dbCon.DatabaseName = BotConfig.Load().DatabaseName;
            if (dbCon.IsConnect())
            {
                message_channel = await GetGlobalChannelInUseAsync(Context.Guild.Id, Context.Channel.Id, dbCon);

                if (!message_channel.Equals(""))
                {
                    // Check the user exists
                    await UserProfile.CheckUserAsync(Context.User.Id, dbCon);

                    // Check user rank
                    user_rank = await UserProfile.GetGroupAsync(Context.User.Id, dbCon);

                    // Get their globals id
                    globals_id = await UserProfile.GetGlobalsIdAsync(Context.User.Id, dbCon);

                    // Save the message in the db
                    string query = "INSERT INTO global_messages (user_id, user_name, user_server, user_image, message_text, message_channel, message_footer) " +
                                   "VALUES(@user_id, @user_name, @user_server, @user_image, @message_text, @message_channel, @message_footer);";
                    var cmd = new MySqlCommand(query, dbCon.Connection);
                    cmd.Parameters.Add("@user_id", MySqlDbType.UInt64).Value         = user_id;
                    cmd.Parameters.Add("@user_name", MySqlDbType.String).Value       = user_name;
                    cmd.Parameters.Add("@user_server", MySqlDbType.String).Value     = user_server;
                    cmd.Parameters.Add("@user_image", MySqlDbType.String).Value      = user_image;
                    cmd.Parameters.Add("@message_text", MySqlDbType.String).Value    = message_text;
                    cmd.Parameters.Add("@message_channel", MySqlDbType.String).Value = message_channel;
                    cmd.Parameters.Add("@message_footer", MySqlDbType.String).Value  = globals_id + " | " + message_footer;

                    try
                    {
                        await cmd.ExecuteNonQueryAsync();

                        await Context.Message.DeleteAsync();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }

                // Post the messages everywhere
                if (!message_channel.Equals(""))
                {
                    var embed = new EmbedBuilder()
                    {
                        Color = new Color(114, 137, 218)
                    };
                    embed.WithAuthor(user_name + "#" + Context.User.Discriminator + " from " + user_server, user_image);
                    embed.WithDescription(message_text);
                    embed.WithFooter(user_rank + " - " + globals_id + " | " + message_footer);

                    string query  = "SELECT * FROM server_configs;";
                    var    cmd    = new MySqlCommand(query, dbCon.Connection);
                    var    reader = await cmd.ExecuteReaderAsync();

                    while (await reader.ReadAsync())
                    {
                        if (!user_rank.ToLower().Equals("blacklisted"))
                        {
                            await PostToChannelAsync(message_channel, reader, embed, message_images, message_mentions);
                        }
                    }

                    reader.Close();
                    cmd.Dispose();
                }

                dbCon.Close();
            }
            else
            {
                Console.WriteLine("Couldnt connect...");
            }
        }
コード例 #2
0
ファイル: Message.cs プロジェクト: tandpfun/Globals
        public static async Task PostGlobalMessageAsync(SocketCommandContext Context)
        {
            ulong  user_id     = Context.User.Id;
            string user_name   = Context.User.Username;
            string user_rank   = "";
            string user_server = Context.Guild.Name;
            string user_image  = Context.User.GetAvatarUrl();

            string message_text    = Context.Message.Content;
            string message_channel = "";
            string message_footer  = user_id + " - " + Context.Message.Timestamp.ToString();

            var dbCon = DBConnection.Instance();

            dbCon.DatabaseName = BotConfig.Load().DatabaseName;
            if (dbCon.IsConnect())
            {
                message_channel = await GetGlobalChannelInUseAsync(Context, dbCon);

                if (!message_channel.Equals(""))
                {
                    // Check the user exists
                    await UserProfile.CheckUserAsync(Context.User.Id, dbCon);

                    // Check user rank
                    user_rank = await UserProfile.GetGroupAsync(Context.User.Id, dbCon);

                    // Save the message in the db
                    string query = "INSERT INTO global_messages (user_id, user_name, user_server, user_image, message_text, message_channel, message_footer) " +
                                   "VALUES(@user_id, @user_name, @user_server, @user_image, @message_text, @message_channel, @message_footer);";
                    var cmd = new MySqlCommand(query, dbCon.Connection);
                    cmd.Parameters.Add("@user_id", MySqlDbType.UInt64).Value         = user_id;
                    cmd.Parameters.Add("@user_name", MySqlDbType.String).Value       = user_name;
                    cmd.Parameters.Add("@user_server", MySqlDbType.String).Value     = user_server;
                    cmd.Parameters.Add("@user_image", MySqlDbType.String).Value      = user_image;
                    cmd.Parameters.Add("@message_text", MySqlDbType.String).Value    = message_text;
                    cmd.Parameters.Add("@message_channel", MySqlDbType.String).Value = message_channel;
                    cmd.Parameters.Add("@message_footer", MySqlDbType.String).Value  = message_footer;

                    try
                    {
                        await cmd.ExecuteNonQueryAsync();

                        await Context.Message.DeleteAsync();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }

                // Post the messages everywhere
                if (!message_channel.Equals(""))
                {
                    var embed = new EmbedBuilder()
                    {
                        Color = new Color(114, 137, 218)
                    };
                    embed.WithAuthor(user_name + " from " + user_server, user_image);
                    embed.WithDescription(message_text);
                    embed.WithFooter(user_rank + " - " + message_footer);

                    string query  = "SELECT * FROM server_configs;";
                    var    cmd    = new MySqlCommand(query, dbCon.Connection);
                    var    reader = await cmd.ExecuteReaderAsync();

                    while (await reader.ReadAsync())
                    {
                        if (!user_rank.ToLower().Equals("blacklisted"))
                        {
                            await PostMessageAsync(message_channel, reader, embed);
                        }
                    }

                    reader.Close();
                    cmd.Dispose();
                }

                dbCon.Close();
            }
            else
            {
                Console.WriteLine("Couldnt connect...");
            }
        }