Прежде всего, поскольку вы упомянули, что используете DiscordSharp, я лично рекомендую использовать Discord.Net
, поскольку библиотека D # не обновлялась уже пару лет и Discord.Net
находится в постоянном развитии и имеет дюжину API для подключения к Discord Bot API.
Хотя вы можете подключиться к API из других онлайн-сервисов, таких как LUIS
, DialogFlow
и таких фреймворков, как Oscova
Я запишу код для прямого взаимодействия через Discord.Net
.
В Visual Studio:
- Выберите
Tools
- Выберите
NuGet Package Manager
и выберите Package Manager Console
Введите следующую команду (после удаления текущего пакета D #)
Install-Package Discord.Net
Вы можете получить идентификатор пользователя и отправьте сообщение нужному каналу / пользователю через объект SocketMessage
, полученный в событии Client.MessageReceived
.
Client = new DiscordSocketClient();
Client.MessageReceived += ClientOnMessageReceived;
await Client.LoginAsync(TokenType.Bot, "YOUR_BOT_TOKEN");
await Client.StartAsync();
Создайте некоторый обработчик события. В приведенном ниже коде вы можете увидеть, как получить информацию о пользователе и активности.
private async Task ClientOnMessageReceived(SocketMessage socketMessage)
{
await Task.Run(() =>
{
//Activity is not from a Bot.
if (!socketMessage.Author.IsBot)
{
var authorId = socketMessage.Author.Id;
var channelId = socketMessage.Channel.Id.ToString();
var messageId = socketMessage.Id.ToString();
var message = socketMessage.Content;
var channel = Client.GetChannel(Convert.ToUInt64(channelId));
var socketChannel = (ISocketMessageChannel)channel;
//Do Something and send a response here.
socketChannel.SendMessageAsync("YOUR RESPONSE");
}
});
}