Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports Globals.GlobalResources
- Imports System.IO
- Public Class Class1
- Implements Global.Globals.Plgn
- Private Win As main
- Public Sub Config() Implements Globals.Plgn.Config
- On Error Resume Next
- Win.Show()
- End Sub
- Public ReadOnly Property Name As String Implements Globals.Plgn.Name
- Get
- Return "UserList - TizzyT"
- End Get
- End Property
- Public Function ProcessMessage(InputMessage As Globals.GlobalResources.Message) As Boolean Implements Globals.Plgn.ProcessMessage
- If Win.Running = False Then
- Win.BotNick = InputMessage.BotNick
- Win.Running = True
- Win.GetChatters()
- Win.UserListPollTimer.Enabled = True
- End If
- Return False
- End Function
- Public Sub New()
- AddResource("UserList")
- Win = New main
- Win.UserListIndex = GetResourceIndexOfOrigin("UserList")
- Win.Greeting = "Welcome <JOINED>!"
- Win.UserListPollTimer.Interval = 10000
- LoadConfig()
- AddResourceElement(Win.UserListIndex, "List", "Moderators", New List(Of String))
- AddResourceElement(Win.UserListIndex, "List", "Staff", New List(Of String))
- AddResourceElement(Win.UserListIndex, "List", "Admins", New List(Of String))
- AddResourceElement(Win.UserListIndex, "List", "Viewers", New List(Of String))
- End Sub
- Private Sub LoadConfig()
- Load: If File.Exists(My.Application.Info.DirectoryPath & "\Plugins\UserList.ini") Then
- Using setter As New StreamReader(My.Application.Info.DirectoryPath & "\Plugins\UserList.ini")
- While setter.Peek <> -1
- Dim line As String = setter.ReadLine.Trim
- If line.StartsWith("Greet:") Then
- line = line.Remove(0, 6).Trim
- If line = String.Empty Then Win.Greeting = "Welcome <JOINED>!" Else Win.Greeting = line
- ElseIf line.StartsWith("Interval:") Then
- line = line.Remove(0, 9).Trim
- If IsNumeric(line) Then Win.UserListPollTimer.Interval = CInt(line) Else Win.UserListPollTimer.Interval = 10000
- End If
- End While
- End Using
- Else
- Using setter As New StreamWriter(My.Application.Info.DirectoryPath & "\Plugins\UserList.ini", False)
- setter.WriteLine("Greet:Welcome <JOINED>!")
- setter.WriteLine("Interval:10000")
- setter.Flush()
- End Using
- GoTo Load
- End If
- End Sub
- End Class
- Imports Globals.GlobalResources
- Imports System.IO
- Imports System.Windows.Forms
- Imports System.Drawing
- Public Class main
- Private GreetStarted As Integer = 0
- Public Greeting As String = String.Empty
- Public UserListIndex As Integer = -1
- Public BotNick As String = Nothing
- Public Running As Boolean = False
- Public WithEvents UserListPollTimer As New System.Timers.Timer
- Private Sub main_FormClosing(sender As Object, e As Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
- e.Cancel = True
- Me.Hide()
- End Sub
- Private Sub UserListPollTimer_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles UserListPollTimer.Elapsed
- GetChatters()
- End Sub
- Private Function GetSource(ByVal url As String) As String
- retry: On Error GoTo retry
- Dim source As String = New System.Net.WebClient().DownloadString(url)
- Return source
- End Function
- Public Sub GetChatters()
- Dim sourceString As String = String.Empty
- If Running Then
- If ConnectionStatus() = False Then
- GreetStarted = 0
- Running = False
- Exit Sub
- End If
- sourceString = GetSource("http://tmi.twitch.tv/group/user/" & GetCurrentChan(). _
- Replace("#", String.Empty).Trim.ToLower & "/chatters").Replace("""", String.Empty)
- Dim OldUsers As New List(Of String)
- Dim NewUsers As New List(Of String)
- sourceString = sourceString.Replace(vbCrLf, String.Empty)
- sourceString = sourceString.Replace(vbCr, String.Empty)
- sourceString = sourceString.Replace(vbLf, String.Empty)
- sourceString = sourceString.Replace(" ", String.Empty)
- Dim SourceParts() As String = sourceString.Split("[")
- If GreetStarted Then
- SyncLock SharedResources(UserListIndex).Resources
- For i = 0 To 3
- For Each User As String In SharedResources(UserListIndex).Resources(i).Value
- OldUsers.Add(User)
- Next
- Next
- End SyncLock
- End If
- For i = 0 To 3
- Try
- Dim newUSR As List(Of String) = SourceParts(i + 1).Split("]")(0).Split(",").ToList
- For x = newUSR.Count - 1 To 0 Step -1
- If newUSR(x).Trim = String.Empty Then newUSR.RemoveAt(x)
- Next
- SetResourceElement(UserListIndex, i, newUSR)
- Catch ex As Exception
- 'Handle if wanted
- End Try
- Next
- If GreetStarted = 2 Then
- If ActiveCB.Checked Then
- SyncLock SharedResources(UserListIndex).Resources
- For i = 0 To 3
- For Each User As String In SharedResources(UserListIndex).Resources(i).Value
- If Not User.Trim = String.Empty And Not User.Trim.ToLower = BotNick.Trim.ToLower Then NewUsers.Add(User)
- Next
- Next
- End SyncLock
- For Each User As String In OldUsers
- Try
- NewUsers.RemoveAt(NewUsers.IndexOf(User))
- Catch ex As Exception
- 'Handle if wanted
- End Try
- Next
- Dim GreetUsers As String = String.Empty
- If NewUsers.Count > 0 Then
- For i = 0 To NewUsers.Count - 1
- If i = 0 Then GreetUsers &= NewUsers(0) Else GreetUsers &= ", " & NewUsers(i)
- Next
- AddToSend("PRIVMSG " & GetCurrentChan() & " :" & Greeting.Replace("<JOINED>", GreetUsers))
- End If
- End If
- Else
- GreetStarted += 1
- End If
- RefreshUserList()
- End If
- End Sub
- Public Sub SaveInfo()
- Using setter As New StreamWriter(My.Application.Info.DirectoryPath & "\Plugins\UserList.ini", False)
- setter.WriteLine("Greet:" & Greeting)
- setter.WriteLine("Interval:" & UserListPollTimer.Interval)
- setter.Flush()
- End Using
- End Sub
- Public Delegate Sub _RefreshuserList()
- Public Sub RefreshUserList()
- If InvokeRequired Then
- Invoke(New _RefreshuserList(AddressOf RefreshUserList))
- Else
- Dim UsersList As New List(Of String)
- For i = 0 To 3
- SyncLock SharedResources(UserListIndex).Resources
- UsersList = SharedResources(UserListIndex).Resources(i).Value
- End SyncLock
- Select Case i
- Case 0
- If UsersList.Count > 0 Then
- If ModsList.Items.Count > 0 Then
- For User = ModsList.Items.Count - 1 To 0 Step -1
- If Not UsersList.Contains(ModsList.Items(User)) Then
- ModsList.Items.RemoveAt(User)
- End If
- Next
- End If
- For Each usr As String In UsersList
- If Not ModsList.Items.Contains(usr) Then ModsList.Items.Add(usr)
- Next
- End If
- Case 1
- If UsersList.Count > 0 Then
- If StaffList.Items.Count > 0 Then
- For User = StaffList.Items.Count - 1 To 0 Step -1
- If Not UsersList.Contains(StaffList.Items(User)) Then
- StaffList.Items.RemoveAt(User)
- End If
- Next
- End If
- For Each usr As String In UsersList
- If Not StaffList.Items.Contains(usr) Then StaffList.Items.Add(usr)
- Next
- End If
- Case 2
- If UsersList.Count > 0 Then
- If AdminsList.Items.Count > 0 Then
- For User = AdminsList.Items.Count - 1 To 0 Step -1
- If Not UsersList.Contains(AdminsList.Items(User)) Then
- AdminsList.Items.RemoveAt(User)
- End If
- Next
- End If
- For Each usr As String In UsersList
- If Not AdminsList.Items.Contains(usr) Then AdminsList.Items.Add(usr)
- Next
- End If
- Case 3
- If UsersList.Count > 0 Then
- If ViewersList.Items.Count > 0 Then
- For User = ViewersList.Items.Count - 1 To 0 Step -1
- If Not UsersList.Contains(ViewersList.Items(User)) Then
- ViewersList.Items.RemoveAt(User)
- End If
- Next
- End If
- For Each usr As String In UsersList
- If Not ViewersList.Items.Contains(usr) Then ViewersList.Items.Add(usr)
- Next
- End If
- End Select
- Next
- End If
- End Sub
- Private Sub ModsList_DrawItem(sender As ListBox, e As DrawItemEventArgs) Handles ModsList.DrawItem, StaffList.DrawItem, AdminsList.DrawItem, ViewersList.DrawItem
- If sender.Items.Count > 0 Then
- On Error Resume Next
- e.DrawBackground()
- If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
- e.Graphics.FillRectangle(Brushes.White, e.Bounds)
- End If
- Using b As New SolidBrush(Color.Black)
- e.Graphics.DrawString(sender.GetItemText(sender.Items(e.Index)), e.Font, b, e.Bounds)
- End Using
- e.DrawFocusRectangle()
- End If
- End Sub
- Private Sub PollTimerBtn_Click(sender As Button, e As EventArgs) Handles PollTimerBtn.Click
- If sender.Text = "Config" Then
- sender.Text = "Set"
- PollTimerTxt.Enabled = True
- Else
- If PollTimerTxt.Text.Trim = "" Then
- PollTimerTxt.Text = UserListPollTimer.Interval / 1000
- PollTimerTxt.Enabled = False
- sender.Text = "Config"
- Else
- If IsNumeric(PollTimerTxt.Text) Then
- PollTimerTxt.Enabled = False
- sender.Text = "Config"
- UserListPollTimer.Interval = PollTimerTxt.Text.Trim * 1000
- SaveInfo()
- Else
- PollTimerTxt.Text = UserListPollTimer.Interval / 1000
- PollTimerTxt.Enabled = False
- sender.Text = "Config"
- End If
- End If
- End If
- End Sub
- Private Sub GreetCfgBtn_Click(sender As Object, e As EventArgs) Handles GreetCfgBtn.Click
- If sender.Text = "Config" Then
- sender.Text = "Set"
- GreetCfgTxt.Enabled = True
- Else
- If GreetCfgTxt.Text.Trim = "" Then
- GreetCfgTxt.Text = Greeting
- GreetCfgTxt.Enabled = False
- sender.Text = "Config"
- Else
- GreetCfgTxt.Enabled = False
- sender.Text = "Config"
- Greeting = GreetCfgTxt.Text.Trim
- SaveInfo()
- End If
- End If
- End Sub
- Private Sub main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- GreetCfgTxt.Text = Greeting
- PollTimerTxt.Text = UserListPollTimer.Interval / 1000
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement