Я пытаюсь выяснить, как отправить сообщение на канал в раздоре, когда пользователь меняет свой статус.Я пытаюсь сделать это, вызывая метод, который находится в отдельном файле.
В моем Program.cs
public async Task StartAsync()
{
// Create instance of the class with the method I want to call
Games statusChange = new Games();
// call the method when a status changes
_client.GuildMemberUpdated += statusChange.UpdateGameBeingPlayed;
}
И классе, который я хочу вызвать (в отдельном файле):
public class Games : ModuleBase<SocketCommandContext>
public async Task UpdateGameBeingPlayed(SocketGuildUser user, SocketUser userAgain)
{
// get channel id
string strGuildId = user.Guild.Id.ToString();
ulong ulongId = Convert.ToUInt64(strGuildId);
// get the channel I want to update
var channel = Context.Guild.GetChannel(ulongId) as SocketTextChannel; // Context here is undefined :(
await channel.SendMessageAsync("a user has changed status!");
}
}
Эта реализация работает, пока я не попытаюсь использовать Context
в своем классе игр.Контекст не определен (потому что нет контекста для получения, я думаю, не уверен).
Так что я думаю, что решение этой проблемы может состоять в том, чтобы импортировать _client
из моего файла Program.cs и использовать его дляотправлять сообщения на канал, который я хочу обновить.Однако я не уверен, как это сделать.
Итак, мои вопросы таковы:
- Есть ли какая-то причина, по которой _client должен быть закрытым?Мне сказали, что так и должно быть, но я никогда не давал объяснений.
- Если правильное решение - обойти _client, как я могу импортировать его в мой класс игр?
Спасибо!