同梱のVBのプラグインなくしたいなーと思う今日この頃
最近VB忘れてきたんですよねー
アタマがC#ベースになってきたせいでよくやります。ExcelVBAでもやってしまってます。
逆にこれから、c#に慣れたい人は下記が文法の注意点ですねw
- if の条件式を括弧で囲んでしまう
- 行末は;でおわらせてしまう
- 匿名メソッドの部分に()=>とか書いてエラーになるw
- 変数定義のときに先に型を書いてしまう
- dimって書くのを忘れる
あまり機能をつけるまえにさっさとc#化したいのですが・・
いまいちエンジンがかかりません。
簡易自動応答は、ギッシリアンコちゃんの頃からの遺産で、今週末あたりのアップデートでやっと処理がスレッド化しますw
変換ルールを沢山かいてる人は処理が若干軽くなるかなーと思います。
ニコ生側の仕様追加でNG共有機能に対応する他、ショートカットキー割り当て機能が付きますので、かなり操作性がアップするのではないかなーとおもいます。
また、プラグインのフォルダー位置をインストール時にチェックする機能をつけましたので、うっかりというか知らない間に別の場所を参照していて、起動しなくなるなどの初期段階のトラブルに対して効果が出るのかなと思います。
追記:
エンジンのかからない理由は・・・このネストの深さですwたぶん・・・
Private Sub _ReceiveChat(ByVal sender As Object, ByVal e As ankoPlugin2.ReceiveChatEventArgs) ' If _channels Is Nothing Then _channels = _host.getLiveList(_host.CurrentCast.liveid) End If 'チャンネルを区分け Dim ext As Boolean = False For Each cont As LibAnko.broadcast In _channels If e.Chat.Thread = cont.ms_thread Then ext = True Exit For End If Next If Not ext Then Return End If Try '待ち時間の間も次のコメントを処理するためにスレッド化 System.Threading.ThreadPool.QueueUserWorkItem( Sub(obj As Object) '有効+主コメ以外 If _enableConv And e.Chat.Premium <> LibAnko.Chat_premium.caster Then For Each conv As convItem In convItemList If conv.rcvText <> "" And conv.resText <> "" Then '' If ((e.Chat.Premium = LibAnko.Chat_premium.ippan_bsp Or e.Chat.Premium = LibAnko.Chat_premium.premium_bsp) And conv.isNoBSP) Then Debug.Print("pass") Else Dim enqwork As System.Text.RegularExpressions.Match = _ System.Text.RegularExpressions.Regex.Match(TrimSpace(e.Chat.Message), _ "(" & conv.rcvText & ")", _ System.Text.RegularExpressions.RegexOptions.Singleline) If enqwork.Success Then Dim msg As String = e.Chat.Message Dim resmsg As String = conv.resText Dim resmsgs() As String '複数あると思われる場合 If conv.resText.Contains("|") Then Dim resranmsg As System.Text.RegularExpressions.Match = _ System.Text.RegularExpressions.Regex.Match(conv.resText, _ "\((.+?)\)", _ System.Text.RegularExpressions.RegexOptions.Singleline) If resranmsg.Success Then Dim res1 As String = resranmsg.Groups(1).Value '置換え用 Dim res2 As String = resranmsg.Groups(0).Value resmsgs = res1.Split("|") Dim r As System.Random = New System.Random() Dim selno As Integer = r.Next(resmsgs.Length) resmsg = resmsg.Replace(res2, resmsgs(selno)) End If End If If (e.Chat.userinfo IsNot Nothing) Then resmsg = resmsg.Replace("$nickname", e.Chat.userinfo.CharaName) End If If (e.Chat.cast IsNot Nothing) Then resmsg = resmsg.Replace("$stand", e.Chat.cast.standing) End If resmsg = resmsg.Replace("$no", e.Chat.No) resmsg = resmsg.Replace("$msg", e.Chat.Message) resmsg = resmsg.Replace("$time", Now.ToString("h時m分s秒")) resmsg = resmsg.Replace("$date", Now.ToString("yyyy年M月d日")) resmsg = resmsg.Replace("$version", String.Format("{0} {1}", _host.ApplicationName, _host.ApplicationVersion)) If enqwork.Groups.Count >= 2 Then For iii As Integer = 1 To enqwork.Groups.Count - 1 resmsg = resmsg.Replace("$" & iii & ";", enqwork.Groups(iii).Value) Next End If Debug.Print(resmsg) If enq IsNot Nothing Then LibAnko.Utility.DoInvoke( Sub() enq.enqTitle.Text = resmsg End Sub, enq) 'enq.enqTitle.Text = resmsg End If If _host.CanPostOwnerComment Then '待ち時間があれば待処理 If conv.responseWaitTime > 0 Then System.Threading.Thread.Sleep(conv.responseWaitTime) End If _host.PostOwnerComment(resmsg, "", "") End If End If If GetInputState Then System.Windows.Forms.Application.DoEvents() End If End If Next End If End Sub ) Catch ex As Exception End Try End Sub