예제 #1
0
        public async Task AddEducation(string word, string reply)
        {
            var serverId = Context.Guild.Id;
            var sql      = string.Format("SELECT * FROM 自動応答 WHERE サーバーID = '{0}' AND 言葉 = '{1}'",
                                         serverId,
                                         word);

            var table = DBAccesser.RunSQLGetResult(sql);

            sql = string.Format("INSERT INTO 自動応答 VALUES ('{0}', '{1}', '{2}')",
                                serverId,
                                word,
                                reply);

            if (DBAccesser.RunSQL(sql))
            {
                await ReplyAsync(string.Format("言葉:「{0}」 返事:「{1}」を覚えました",
                                               word,
                                               reply));
            }
            else
            {
                await ReplyAsync("うまく覚えられませんでした・・・");
            }
        }
예제 #2
0
        public async Task ListEducation()
        {
            var serverId = Context.Guild.Id;
            var sql      = string.Format("SELECT * FROM 自動応答 WHERE サーバーID = '{0}'",
                                         serverId);

            var table = DBAccesser.RunSQLGetResult(sql);

            foreach (DataRow row in table.Rows)
            {
                var word  = row["言葉"].ToString();
                var reply = row["返事"].ToString();

                await ReplyAsync("言葉:" + word);
                await ReplyAsync("返事:" + reply);
            }
        }
예제 #3
0
        public async Task Reply(SocketUserMessage message)
        {
            var channel  = message.Channel as SocketGuildChannel;
            var serverId = channel.Guild.Id;
            var word     = message.Content;
            var sql      = string.Format("SELECT * FROM 自動応答 WHERE サーバーID = '{0}' AND 言葉 = '{1}'",
                                         serverId,
                                         word);

            var table = DBAccesser.RunSQLGetResult(sql);

            foreach (DataRow row in table.Rows)
            {
                var reply = row["返事"].ToString();
                await message.Channel.SendMessageAsync(reply);
            }
        }
예제 #4
0
파일: Program.cs 프로젝트: TUSB/TUSBCHAN
        /// <summary>
        /// ユーザーが会議から抜けたときの処理
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        private async Task UserLeft(SocketGuildUser user)
        {
            // 退出通知メッセージを流す

            var sql = string.Format("SELECT * FROM ログアウト WHERE サーバーID = '{0}'",
                                    user.Guild.Id);

            var table = DBAccesser.RunSQLGetResult(sql);

            if (table.Rows.Count > 0)
            {
                var row       = table.Rows[0];
                var channelId = ulong.Parse(row["チャンネルID"].ToString());
                var word      = row["内容"].ToString();
                word = word.Replace("{ServerName}", user.Guild.Name);
                word = word.Replace("{UserName}", user.Username);
                await user.Guild.GetTextChannel(channelId).SendMessageAsync(word);
            }
        }
예제 #5
0
        public async Task AddLoginNotification(string word)
        {
            var serverId  = Context.Guild.Id;
            var channelId = Context.Channel.Id;
            var sql       = string.Format("SELECT * FROM ログイン WHERE サーバーID = '{0}'",
                                          serverId);

            var table = DBAccesser.RunSQLGetResult(sql);

            if (table.Rows.Count > 0)
            {
                sql = string.Format("UPDATE ログイン SET チャンネルID = '{0}', 内容 = '{1}' WHERE サーバーID = '{2}'",
                                    channelId,
                                    word,
                                    serverId);

                if (DBAccesser.RunSQL(sql))
                {
                    await ReplyAsync("ログイン通知を設定し直しました");
                }
                else
                {
                    await ReplyAsync("ログイン通知を設定できませんでした");
                }
            }
            else
            {
                sql = string.Format("INSERT INTO ログイン VALUES ('{0}', '{1}', '{2}')",
                                    serverId,
                                    channelId,
                                    word);

                if (DBAccesser.RunSQL(sql))
                {
                    await ReplyAsync("ログイン通知を設定しました");
                }
                else
                {
                    await ReplyAsync("ログイン通知を設定できませんでした");
                }
            }
        }
예제 #6
0
        public async Task SendReply(SocketUserMessage message)
        {
            var channel  = message.Channel as SocketGuildChannel;
            var serverId = channel.Guild.Id;
            var content  = message.Content;
            var sql      = string.Format("SELECT * FROM 自動応答 WHERE サーバーID = '{0}'",
                                         serverId);

            using (var table = DBAccesser.RunSQLGetResult(sql))
            {
                var list = new List <string>();

                foreach (DataRow row in table.Rows)
                {
                    string word  = row["言葉"].ToString();
                    string reply = row["返事"].ToString();

                    if (content.Contains(word))
                    {
                        list.Add(reply);
                    }
                }

                if (list.Count > 0)
                {
                    var rnd   = new Random();
                    var reply = list[rnd.Next(list.Count)];

                    if (reply == "$")
                    {
                        await message.Channel.SendMessageAsync(API.Talk.GetChat(content));
                    }
                    else
                    {
                        await message.Channel.SendMessageAsync(reply);
                    }
                }
            }

            await Task.Delay(1);
        }
예제 #7
0
            public async Task AddLoginNotification(string twitterId, string english = "false")
            {
                var isEnglish = english == "true" ? true : false;
                var channelId = Context.Channel.Id;
                var sql       = string.Format("SELECT * FROM Twitter通知 WHERE チャンネルID = '{0}' AND TwitterID = '{1}'",
                                              channelId,
                                              twitterId);

                var table = DBAccesser.RunSQLGetResult(sql);

                if (table.Rows.Count > 0)
                {
                    sql = string.Format("UPDATE Twitter通知 SET 英語 = '{0}' WHERE チャンネルID = '{1}', TwitterID = '{2}'",
                                        isEnglish,
                                        channelId,
                                        twitterId);

                    if (DBAccesser.RunSQL(sql))
                    {
                        if (isEnglish)
                        {
                            await ReplyAsync(string.Format("このチャンネルで「{0}」さんのツイートを日本語に翻訳して通知します。",
                                                           twitterId));
                        }
                        else
                        {
                            await ReplyAsync(string.Format("このチャンネルで「{0}」さんのツイートを通知します。",
                                                           twitterId));
                        }
                    }
                    else
                    {
                        await ReplyAsync("Twitter通知を登録できませんでした");
                    }
                }
                else
                {
                    sql = string.Format("INSERT INTO Twitter通知 VALUES ('{0}', '{1}', '{2}')",
                                        channelId,
                                        twitterId,
                                        isEnglish);

                    if (DBAccesser.RunSQL(sql))
                    {
                        if (isEnglish)
                        {
                            await ReplyAsync(string.Format("このチャンネルで「{0}」さんのツイートを日本語に翻訳して通知します。",
                                                           twitterId));
                        }
                        else
                        {
                            await ReplyAsync(string.Format("このチャンネルで「{0}」さんのツイートを通知します。",
                                                           twitterId));
                        }
                    }
                    else
                    {
                        await ReplyAsync("Twitter通知を登録できませんでした");
                    }
                }
            }
예제 #8
0
파일: Streaming.cs 프로젝트: TUSB/TUSBCHAN
        public void Next(Status status)
        {
            var screenName = status.User.ScreenName; // TUSkyBlock等
            var name       = status.User.Name;       // TUSB等
            var text       = status.Text;            // つぶやき内容
            var image      = "";
            var id         = status.Id;

            if (status.Entities.Media != null)
            {
                image = status.Entities.Media.First().MediaUrlHttps;
            }

            // 自動リプライ応答
            if (text.Contains("@TUSkyBlock") && (!text.Contains("RT ")) && screenName != "TUSkyBlock")
            {
                var str = Docomo.ChatAI.GetChat(text, screenName);
                str = "@" + screenName + " " + str;
                token.Statuses.Update(new { status = str, in_reply_to_status_id = id });
            }


            // つぶやき通知
            var sql = string.Format("SELECT * FROM Twitter通知 WHERE TwitterID = '{0}'",
                                    screenName);
            var table = DBAccesser.RunSQLGetResult(sql);

            if (table.Rows.Count > 0)
            {
                var title = $"{name}さんのつぶやき";

                if (text.Contains("RT "))
                {
                    title = $"{name}さんのリツイート";
                }

                var eb = new EmbedBuilder()
                {
                    Author = new EmbedAuthorBuilder()
                    {
                        IconUrl = new Uri(status.User.ProfileImageUrlHttps).ToString(),
                        Name    = $"{name}",
                        Url     = $"https://twitter.com/{screenName}",
                    },
                    Color        = new Color(0x55ACEE),
                    Title        = title,
                    Url          = new Uri($"https://twitter.com/{screenName}/status/{status.Id}").ToString(),
                    Description  = $"{text}",
                    ImageUrl     = image,
                    ThumbnailUrl = status.User.ProfileImageUrlHttps,
                    Footer       = new EmbedFooterBuilder()
                    {
                        IconUrl = status.User.ProfileImageUrlHttps,
                        Text    = $"ID:{screenName} | フォロー:{status.User.FriendsCount} フォロワー:{status.User.FollowersCount}"
                    }
                };
                var channelid = ulong.Parse(table.Rows[0][0].ToString());
                var channel   = _client.GetChannel(channelid) as SocketTextChannel;
                channel.SendMessageAsync("", embed: eb);
            }
        }