У меня такая проблема я подключаю бота к чату твитч предварительно вводив название канала в channelTextBox у меня бот подключается по нажатию кнопки коннект (с этим всё хорошо всё работает). Но я хочу отправить сообщение от бота я выбираю бота (бот в виде кнопки) пишу сообщение в idcopytextbox нажимаю энтер для отправки но ничего не происходит. ПОМОГИТЕ!
private void CreateButtonForBot(string botName, Bot bot)
{
Button botButton = new Button
{
Content = botName,
Width = 120,
Height = 40,
Margin = new Thickness(8),
Padding = new Thickness(5),
FontSize = 12,
Background = new SolidColorBrush(Color.FromRgb(30, 33, 61)),
Foreground = new SolidColorBrush(Colors.White),
BorderBrush = new SolidColorBrush(Colors.Black),
BorderThickness = new Thickness(1),
};
botButton.Click += BotButton_Click;
botButton.MouseEnter += (s, e) =>
{
botButton.Background = new SolidColorBrush(Color.FromRgb(100, 149, 237));
};
botButton.MouseLeave += (s, e) =>
{
botButton.Background = new SolidColorBrush(Color.FromRgb(30, 33, 61));
};
stackPanelBots.Children.Add(botButton);
}
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(true);
bots.Add(bot);
CreateButtonForBot(botNames[i], bot);
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка при подключении бота '{botNames[i]}': {ex.Message}");
}
}
}
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);
}
}
}
catch (Exception exception)
{
MessageBox.Show("Ошибка при чтении файла: " + exception.Message);
}
}
}
private void Idtextbox_Copy_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
if (selectedBot == null)
{
MessageBox.Show("Бот не выбран.");
return;
}
string message = idtextbox_Copy.Text;
selectedBot.SendMessage(message);
}
}
using System;
using TwitchLib.Client;
using TwitchLib.Client.Events;
using TwitchLib.Client.Models;
namespace WpfAppGlebItog
{
internal class Bot
{
private ConnectionCredentials creds;
private TwitchClient client;
public string ChannelName { get; private set; }
public string BotName { get; private set; }
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);
}
}
}
}