Я много дружу с библиотекой VkNet. Но, к сожалению, документация по работе с ней достаточно устарела. Так что я решил поделиться и создать маленький туториал по основам работы с этой библиотекой.Прежде всего нужно создать приложение здесь.

И из настроек только что созданного приложения взять App Id.

Теперь можно переходить непосредсвенно к коду.
Создадим консольное приложения .net core и добавим зависимость VkNet.

Создадим экземпляр VkApi.
VkApi api = new VkApi();
Теперь необходимо авторизоваться.
api.Authorize(new ApiAuthParams() { Login = "+79*******", Password = "***", ApplicationId = 684***, Settings = Settings.All });
Получим список из 20 последних диалогов
var dialogs = api.Messages.GetConversations(new GetConversationsParams());
А теперь получим 20 последних сообщений из первого диалога.
var messages = api.Messages.GetHistory(new MessagesGetHistoryParams() {PeerId = dialogs.Items[0].Conversation.Peer.Id});
И, пожалуй, напечатаем результаты.
foreach (var msg in messages.Messages) { Console.WriteLine(msg.Text); }
И отправим тестовое сообщение автору первого предыдущего сообщения.
api.Messages.Send(new MessagesSendParams() { // ну или подставить сюда ид из диалога PeerId = messages.Messages.First().Id, Message = "Test", RandomId = new Random().Next() });

Как пример:

И вот такой конечный код мы получили
тут
VkApi api = new VkApi(); api.Authorize(new ApiAuthParams() { Login = "*", Password = "*", ApplicationId = *, Settings = Settings.All }); var dialogs = api.Messages.GetConversations(new GetConversationsParams()); var messages = api.Messages.GetHistory(new MessagesGetHistoryParams() {PeerId = dialogs.Items[0].Conversation.Peer.Id}); Console.OutputEncoding = Encoding.UTF8; foreach (var msg in messages.Messages) { Console.WriteLine(msg.Text); } api.Messages.Send(new MessagesSendParams() { PeerId = messages.Messages.First().Id, Message = "Test", RandomId = new Random().Next() });
P.S.
Поддержку можно найти тут.
Или актуальная ссылка на тг, для тех у кого обычные ссылки не открываюся.
