// --------------------------------------------------- // 戻り値: ユーザ注意喚起メッセージを出力する際に利用可能な eidx public static int Regist(string encip, string uname) { int eidx = msa_encip_on_talks.IndexOf(encip); if (eidx < 0) { msa_encip_on_talks.Add(encip); msa_unames_on_talks.Add(DB_cur.NewStringList(uname)); // 新規登録時にのみ encip to ban チェックを行う ExitUsr_Stt exitustt = ExitUsr_Stt.EN_OnTalksFlag; if (DB_static.IsBanned(encip)) { exitustt = ExitUsr_Stt.EN_OnTalksFlag | ExitUsr_Stt.EN_Regist_BAN; } msa_flags.Add(exitustt); msa_id_this_session.Add(m_next_id_this_session); m_next_id_this_session--; return(msa_encip_on_talks.Count - 1); } else { int name_idx = msa_unames_on_talks[eidx].IndexOf(uname); if (name_idx < 0) { msa_unames_on_talks[eidx].Insert(0, uname); } msa_flags[eidx] |= ExitUsr_Stt.EN_OnTalksFlag; return(eidx); } }
// ----------------------------------------------- public void OnClk_Btn_AI_talk() { if (mb_AI_talk) { // AI talk 停止処理 mb_AI_talk = false; m_GUI.m_Btn_AI_talk.Text = "---"; m_GUI.m_TBox_info.BackColor = Color.White; DB_cur.Clear_Uid_AI_talked(); } else { // AI talk 開始処理 mb_AI_talk = true; m_GUI.m_Btn_AI_talk.Text = "AI対応"; m_GUI.m_TBox_info.BackColor = Color.Orange; DB_cur.Set_Uid_AI_talked(m_uinfo.m_uid.m_str_uid); AI_talk.Set_TgtUname(m_uinfo.m_uname); AI_talk.Greet_toTgt(); } }
bool mb_getJSON = false; // await Drrr_Host2.GetJSON() で、awaiter が溜まるのを防ぐ async void GetJSON(DateTime datetime) { if (mb_getJSON) { return; } m_Btn_connect.Enabled = false; mb_getJSON = true; // -------------------------------------------------- // JOSN の取得 byte[] bytes_utf8; try { Drrr_Host2.HttpTask getJSON_task = Drrr_Host2.GetJSON_Task_Factory.Create(); await getJSON_task.DoWork(); mb_getJSON = false; m_Btn_connect.Enabled = true; if (getJSON_task.m_str_cancel != null) { MainForm.WriteStatus($"!!! 「JSON取得」がキャンセルされました。\r\n{getJSON_task.m_str_cancel}"); return; } bytes_utf8 = await getJSON_task.m_http_res.Content.ReadAsByteArrayAsync(); } catch (Exception ex) { MainForm.WriteStatus(ex.ToString() + "\r\n"); mb_getJSON = false; m_Btn_connect.Enabled = true; return; } // -------------------------------------------------- // JOSN の解析 try { StringBuilder sb = DB_cur.Anlz_RoomJSON(bytes_utf8); if (sb.Length > 0) { MainForm.WriteMsg(sb.ToString()); } Update_BanCtrls(); // 新規入室者へのメッセージ処理 if (UInfo_onRoom.msb_dtct_new_usr) { UInfo_onRoom.msb_dtct_new_usr = false; try { Drrr_Host2.HttpTask postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create( "来室者用自動メッセージ:この部屋の趣旨は、以下の URL を参考にしてください。宜しくお願いします。"); await postmsg_task.DoWork(); if (postmsg_task.m_str_cancel != null) { throw new Exception(postmsg_task.m_str_cancel); } await Task.Delay(750); postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create("https://github.com/kn201905/Ron_BAN"); await postmsg_task.DoWork(); if (postmsg_task.m_str_cancel != null) { throw new Exception(postmsg_task.m_str_cancel); } } catch (Exception ex) { MainForm.WriteStatus($"!!! 来室者用メッセージの出力時にエラーが発生しました。\r\n{ex.ToString()}\r\n\r\n"); } } } catch (Exception ex) { MainForm.WriteStatus($"!!! JSON解析中に例外が発生しました。JSON を保存します。\r\n{ex.ToString()}\r\n\r\n"); File.WriteAllText(@"Z:err_" + datetime.ToString("HH_mm_ss_f") + ".json" , Encoding.UTF8.GetString(bytes_utf8)); } }