Как мне получить _client в discord.net?
Я создал файл отвечающий за обработку сообщений
if (arg.Content != "")
{
var guild = arg.Channel as SocketGuildChannel;
SocketGuild guildCheck = client.GetGuild(guild.Guild.Id);
var channel = guildCheck.GetTextChannel(1067089425386971216);
var embedBuilder = new EmbedBuilder().WithAuthor($"Автор: {arg.Author.Username}").WithDescription(
$"**Канал**: {arg.Channel.Name}" +
$"\n**Сообщение**: {arg.Content}" +
$"\n \n **Время отправки**: {arg.CreatedAt.AddHours(3)}"
).WithColor(Color.Blue);
await channel.SendMessageAsync(embed: embedBuilder.Build());
}
и подключаю его в главном файле
_client = new DiscordSocketClient(config);
_client.SlashCommandExecuted += slashcommand.SlashCommandHandler;
_client.Ready += creatingCommand.Client_Ready;
_client.MessageReceived += message.checkMessage;
Из-за того что при подключении я использую _client моя функция не работает. Когда я пытаюсь подключить клиент при помощи DiscordSocketClient? client; внутри файла с обработкой, ответ тот же. Но когда я вставляю в главный файл эту функцию, у меня все работает. Проблема в _client, как мне его получить без конфликтов между файлами?
Ответы (1 шт):
Автор решения: Zerosar
→ Ссылка
Хм ок: message.cs
public class MessageHandler
{
private DiscordSocketClient _client;
private ulong _channelId;
public MessageHandler(DiscordSocketClient client, ulong channelId)
{
_client = client;
_channelId = channelId;
}
public async Task CheckMessage(SocketMessage arg)
{
if (arg.Content != "")
{
var guild = (arg.Channel as SocketGuildChannel)?.Guild;
var channel = guild?.GetTextChannel(_channelId);
if (channel != null)
{
var embedBuilder = new EmbedBuilder()
.WithAuthor($"Автор: {arg.Author.Username}")
.WithDescription($"**Канал**: {arg.Channel.Name}" +
$"\n**Сообщение**: {arg.Content}" +
$"\n \n **Время отправки**: {arg.CreatedAt.AddHours(3)}")
.WithColor(Color.Blue);
await channel.SendMessageAsync(embed: embedBuilder.Build());
}
}
}
}
Главный файл
_client = new DiscordSocketClient(config);
var channelId = 1067089425386971216UL;
var messageHandler = new MessageHandler(_client, channelId);
_client.SlashCommandExecuted += slashcommand.SlashCommandHandler;
_client.Ready += creatingCommand.Client_Ready;
_client.MessageReceived += messageHandler.CheckMessage;