private string NullCharFilter(string v) { // その単語の子要素にnull文字がなければ入力そのままで返す if (!(wordBrain[v].Candidates.FirstOrDefault(c => c.MyText == "\0") is WordCandidate wc)) { return(v); } if (!(wc.Candidates.Random() is WordCandidateChild wcc)) { return(v); } if (!WordBrain.ContainsKey(wcc.MyText)) { return(v); } return(wcc.MyText); }
public async Task RunAsync(Message mes, ICitroid citroid) { foreach (KeyValuePair <string, Word> ws in WordBrain.ToList()) { if ((DateTime.UtcNow - ws.Value.TimeStamp).TotalHours > WORD_LIFE_SPAN) { WordBrain.Remove(ws.Key); } } //LOG var username = (mes.user == null ? mes.username : citroid.GetUser(mes.user)); Console.WriteLine($"{username}@{mes.channel} : {mes.text}"); if (Regex.IsMatch(mes.text, $"<@({citroid.Id}|citroid)>")) { mes.text = mes.text.Replace($"<@{citroid.Id}> ", "").Replace($"<@{citroid.Id}>", ""); if (isActive && (mes.text.Contains("ぼんぼやーじゅ") || mes.text.Contains("ばいばい"))) { if (username == Citroid.ParentName) { // 反抗期卒業 //if (r.Next(0) == 0) //{ // await citroid.PostAsync(mes.channel, $"うるせえ!", userName: "******", iconEmoji: ":anger:"); // return; //} await citroid.PostAsync(mes.channel, $"落ちますノシ"); await citroid.PostAsync(mes.channel, $"*Citroid が退室しました*"); isActive = false; } else { await citroid.PostAsync(mes.channel, $"<@{username}> は親じゃないなー"); } return; } else if (!isActive && (mes.text.Contains("かむひーや") || mes.text.Contains("おいで"))) { if (username == Citroid.ParentName) { await citroid.PostAsync(mes.channel, $"*Citroid が入室しました*"); await citroid.PostAsync(mes.channel, $"Yo"); isActive = true; } return; } else if (isActive && mes.text.Contains("注意喚起")) { // 警告防止 Task <Task> @void = Task.Factory.StartNew(async() => { // ゆうさく注意喚起シリーズ PostedMessage post = await citroid.PostAsync(mes.channel, ":simple_smile:" + new string(' ', 20) + ":bee:"); for (var i = 19; i >= 0; i -= 2) { // ビンにかかるだいたいの時間 await Task.Delay(150); post = await post.UpdateAsync(":simple_smile:" + new string(' ', i) + ":bee:"); } // ビンにかかるだいたいの時間 await Task.Delay(330); post = await post.UpdateAsync(":simple_smile:"); // チクにかかるだいたいの時間 await Task.Delay(1000); post = await post.UpdateAsync(":scream:"); // アアアアアアアアアア にかかるだいたいの時間 await Task.Delay(2000); post = await post.UpdateAsync(":upside_down_face:"); //アーイクッ にかかるだいたいの時間 await Task.Delay(1000); post = await post.UpdateAsync(":skull:"); //チーン (ウ ン チ ー コ ン グ) にかかるだいたいの時間 await Task.Delay(2000); //背景が黒くなって3人に増えて音が流れて注意喚起する処理 post = await post.UpdateAsync(@"スズメバチには気をつけよう! :simple_smile::simple_smile::simple_smile:"); }); return; } await Task.Delay(1000); if (isActive) { await citroid.PostAsync(mes.channel, $"<@{username}> {Say(mes.text)}"); } } else if (!config.ReplyOnly && config.PostRate > 0 && r.Next((int)(1 / config.PostRate)) == 0) { mes.text = mes.text.Replace($"<@{citroid.Id}>", ""); await Task.Delay(2000); if (isActive) { await citroid.PostAsync(mes.channel, Say(mes.text)); } } if (mes.subtype != "bot_message") { Learn(mes.text, long.Parse(mes.ts.Split('.')[0]).ToDateTime()); } }