Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.11.2023
Сообщений: 21

Не работает авто рассылка twitch chat

24.06.2024, 09:27. Показов 349. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в том что когда я нажимаю на кнопку StartSendingMessagesButton_Click сообщения не отправляются предварительно я их загрузил через LoadMessagesButton_Click и так же я загрузил аккаунты с которых должны отправятся сообщения (LoadFileButton_Click) и подключил их к чату twitch irc (connectchat_Click).

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System; 
using System.Collections.Generic; 
using System.Threading.Tasks; 
using WpfAppGlebItog; 
namespace WpfAppGlebItog 
{ 
 internal class AutoMessageSender 
 { 
 private List<string> messages; 
 private List<string> botNames; 
 private List<string> oauthTokens; 
 private string channelName; 
 private int currentMessageIndex = 0; 
 private int currentBotIndex = 0; 
 public AutoMessageSender(string channelName, List<string> botNames, List<string> oauthTokens, List<string> messages) 
 { 
 this.channelName = channelName; 
 this.botNames = botNames; 
 this.oauthTokens = oauthTokens; 
 this.messages = messages; 
 } 
 public async Task StartSendingMessages() 
 { 
 MessageSender messageSender = new MessageSender(channelName, botNames, oauthTokens); 
 while (true) 
 { 
 try 
 { 
 string messageToSend = messages[currentMessageIndex]; 
 messageSender.SendMessage(messageToSend, currentBotIndex); 
 Console.WriteLine($"Сообщение '{messageToSend}' было отправлено."); 
 currentMessageIndex = (currentMessageIndex + 1) % messages.Count; 
 currentBotIndex = (currentBotIndex + 1) % botNames.Count; 
 await Task.Delay(5000); // Чтобы избежать флуда и ограничений о соотношении сообщений 
 } 
 catch (Exception ex) 
 { 
 Console.WriteLine($"Ошибка при отправке сообщения: {ex.Message}"); 
 } 
 } 
 } 
 } 
}

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
private void LoadFileButton_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*";
    bool? result = openFileDialog.ShowDialog();
    if (result == true)
    {
        string filePath = openFileDialog.FileName;
        try
        {
            string[] lines = File.ReadAllLines(filePath);
            foreach (string line in lines)
            {
                string[] parts = line.Split(':');
                if (parts.Length >= 2)
                {
                    string botName = parts[0].Trim();
                    string oauthToken = parts[1].Trim();
 
                    botNames.Add(botName);
                    oauthTokens.Add(oauthToken);
                }
            }
            MessageBox.Show("Аккаунты успешно загружены.");
        }
        catch (Exception exception)
        {
            MessageBox.Show("Ошибка при чтении файла: " + exception.Message);
        }
    }
}
 
private void LoadMessagesButton_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*";
    bool? result = openFileDialog.ShowDialog();
    if (result == true)
    {
        string filePath = openFileDialog.FileName;
        try
        {
            messages = new List<string>(File.ReadAllLines(filePath));
            MessageBox.Show("Сообщения успешно загружены.");
        }
        catch (Exception exception)
        {
            MessageBox.Show("Ошибка при чтении файла с сообщениями: " + exception.Message);
        }
    }
}
 
private async void StartSendingMessagesButton_Click(object sender, RoutedEventArgs e)
{
    try
    {
        Console.WriteLine("Начало метода StartSendingMessagesButton_Click");
        // Проверка, инициализирован ли список сообщений
        if (messages.Count == 0)
        {
            MessageBox.Show("Загрузите файл с сообщениями.");
            return;
        }
        // Проверка данных о ботах
        if (botNames.Count == 0 || oauthTokens.Count == 0 || botNames.Count != oauthTokens.Count)
        {
            MessageBox.Show("Некорректные данные о ботах. Пожалуйста, загрузите файл с данными о ботах.");
            return;
        }
        // Получение имени канала
        string channelName = channelNameTextBox.Text;
        // Инициализация и запуск отправщика сообщений
        var autoMessageSender = new AutoMessageSender(channelName, botNames, oauthTokens, messages);
        await autoMessageSender.StartSendingMessages();
        // Отключение кнопки во время отправки сообщений
        (sender as Button).IsEnabled = false;
        Console.WriteLine("Конец метода StartSendingMessagesButton_Click");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Произошло исключение: {ex.Message}");
        MessageBox.Show($"Произошла ошибка: {ex.Message}");
    }
}
 
private void connectchat_Click(object sender, RoutedEventArgs e)
{
    if (botNames.Count == 0 || oauthTokens.Count == 0 || botNames.Count != oauthTokens.Count)
    {
        MessageBox.Show("Некорректные данные о ботах. Пожалуйста, загрузите файл с данными о ботах.");
        return;
    }
 
    for (int i = 0; i < botNames.Count; i++)
    {
        try
        {
            Bot bot = new Bot(channelNameTextBox.Text, botNames[i], oauthTokens[i]);
            bot.Connect(isLogging: true);
            CreateButtonForBot(botNames[i], oauthTokens[i], bot);
        }
        catch (Exception ex)
        {
            MessageBox.Show($"Ошибка при подключении бота '{botNames[i]}': {ex.Message}");
        }
    }
}
 
//Bot.cs
 
using System;
using TwitchLib.Client;
using TwitchLib.Client.Events;
using TwitchLib.Client.Models;
 
namespace WpfAppGlebItog
{
    internal class Bot
    {
        private ConnectionCredentials creds;
        private TwitchClient client;
        private string ChannelName;
        private string BotName;
        private string BotToken;
 
        internal Bot(string channelName, string botName, string botToken)
        {
            ChannelName = channelName;
            BotName = botName;
            BotToken = botToken;
            creds = new ConnectionCredentials(BotName, BotToken);
            client = new TwitchClient();
        }
 
        internal void Connect(bool isLogging)
        {
            client.Initialize(creds, ChannelName);
            if (isLogging)
                client.OnLog += Client_OnLog;
            client.OnConnected += Client_OnConnected;
            client.Connect();
        }
 
        private void Client_OnLog(object sender, OnLogArgs e)
        {
            Console.WriteLine(e.Data);
        }
 
        private void Client_OnConnected(object sender, OnConnectedArgs e)
        {
            Console.WriteLine($"Connected to {e.AutoJoinChannel}");
        }
 
        internal void Disconnect()
        {
            client.Disconnect();
        }
 
        internal void SendMessage(string message)
        {
            if (client.IsConnected && !string.IsNullOrEmpty(ChannelName))
            {
                client.SendMessage(ChannelName, message);
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2024, 09:27
Ответы с готовыми решениями:

Не работает twitch.tv
Добрый День,возникла проблема,просто перестал запускаться твич,пишет твич тв недоступен(ERR_CONNECTION_TIMED_OUT),не работает как в...

Не работает twitch
Захожу посмотреть какой-либо стрим,5 секунд стрим показывает нормально потом интернет просто напросто отключается.Интернет работает кстати...

Не работает twitch
Просто не работает твич идет загрузка потом а потом:Веб-страница недоступна. twitch.tv не отвечает. Сайт недоступен, или нет подключения...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2024, 09:27
Помогаю со студенческими работами здесь

Twitch.tv - не работает
Здравствуйте на компьютере не работает сайт twitch.tv пишет &quot;Не удается подключится к сайту.Превышено время ожидания ответа от сайта...

Не работает twitch bot
using Microsoft.Win32; using System; using System.IO; using System.Runtime.InteropServices; using System.Threading; using...

Не работает сайт twitch
Добрый день обращаюсь к вам с такой проблемой не работает сайт twitch.tv и origin.com в браузере ERR_CONNECTION_TIMED_OUT скидываю логи...

Не работает корректно Kide-Chat
Установил данный чат у себя в портале построенном на Джумла 3,1, но он не работает корректно, то есть при вводе текста не происходит...

Не работает twitch - Удаление вирусов
Здравствуйте, Вчера вечером перестало загружать трансляции и видео, сегодня сайт вообще перестал загружаться либо загружался через долгое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru