同梱の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