У меня возникло несколько вопросов по созданию ВК бота на C# с помощью библиотеки VkNet.
Вот код:
while (true)
{
var poll = api.Groups.GetBotsLongPollHistory(
new BotsLongPollHistoryParams()
{ Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 1 });
if (poll?.Updates == null) continue;
foreach (var a in poll.Updates)
{
if (a.Type == GroupUpdateType.MessageNew)
{
api.Messages.Send(new MessagesSendParams()
{
RandomId = new Random().Next(),
PeerId = *ID бота*,
UserId = *ID получателя*,
Message = "message"
});
}
}
}
Необходимо пометить сообщение как прочитанное после его обработки. https://vknet.github.io/vk/messages/markAsRead/
Как вариант можно проверять состояние последнего полученного сообщения и если оно не прочитано, выполнять требуемые действия
var msg = vk.Messages.Get(new MessagesGetParams {Count = 1 });
if (msg.Messages[0].ReadState == VkNet.Enums.MessageReadState.Unreaded)
{
//TODO
}
Соответственно, если это сообщество, то через LongPoll можно следующим образом сделать проверку:
api.Authorize(new ApiAuthParams() { AccessToken = Token });
var s = new LongPollServerResponse();
s = api.Groups.GetLongPollServer(groupID); //id группы
while (true) // получение обновлений
{
var poll = api.Groups.GetBotsLongPollHistory(
new BotsLongPollHistoryParams()
{ Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 25 });
if (poll?.Updates == null) continue; // Проверка на новые события
foreach (var a in poll.Updates)
{
if (a.Type == GroupUpdateType.MessageNew)
{
string userMessage = a.Message.Text.ToLower();
long? userID = a.Message.FromId;
string payload = a.Message.Payload;
if (a.Message.ReadState == VkNet.Enums.MessageReadState.Unreaded)
{
//Обрабатываем
// После всех действий говорим что сообщение прочитано
a.Message.ReadState = VkNet.Enums.MessageReadState.Readed;
}
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть функция (прикручена к нажатию кнопки), которая должна включать/отключать весь звук на сцене (ну и сохранять наличие/отсутствие...
Хочу сделать свою программу многостраничнойДля этого я назначил кнопке событие по переключению страниц
Пишу простой tweener на UnityДвижок предоставляет классы (компоненты) для рендера, и у тех, что я использую есть свойство color, но эти классы не наследуются...
Как в laravel сделать если не авторизован пользователь и вызвать Auth::user()->id; то возвращается ошибка Trying to get property of non-object как ее заменить на свое...