Загрузка...

VkNet бот

Тема в разделе C# создана пользователем Minin_inactive4471240 19 фев 2022. 386 просмотров

  1. Minin_inactive4471240
    Minin_inactive4471240 Автор темы 19 фев 2022 3 5 сен 2021
    Создал бота, теперь нужно сделать кнопки, для быстрых сообщений боту. Перерыл много источников, но ничего не нашёл. Помогите добавить кнопки для бота
     
  2. Madness
    Madness 19 фев 2022 Заблокирован(а) 2226 23 дек 2019
    1. Minin_inactive4471240 Автор темы
      Madness, всё равно ничего не дало, можешь скинуть прямой линк на добавление кнопок
    2. Minin_inactive4471240 Автор темы
      Madness, всё равно ничего не дало, можешь скинуть прямой линк на добавление кнопок
  3. Обменник
  4. утин
    утин 19 фев 2022 5 13 ноя 2019
    тебе нужны Inline кнопки?
     
    1. Посмотреть предыдущие комментарии (6)
    2. утин
      vtlstolyarov, у него вместо сообщения null приходит
    3. vtlstolyarov
      утин, Может вместо тела сообщения а не вместо сообщения, а он его в нижний регистр тут же пытается загнать без проверки, я там ниже отписался куском кода
    4. утин
      vtlstolyarov, у него именно в сообщении null летит
      [IMG]
  5. Minin_inactive4471240
    Minin_inactive4471240 Автор темы 19 фев 2022 3 5 сен 2021
    Код

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using VkNet;
    using VkNet.Model.RequestParams;
    using VkNet.Enums.Filters;
    using VkNet.Model;
    using VkNet.Enums.SafetyEnums;
    using VkNet.Abstractions;
    using VkNet.Model.Keyboard;
    using System.Threading;

    namespace zkz
    {
    internal class Program
    {
    public static VkApi api = new VkApi();
    static void Main(string[] args)
    {

    api.Authorize(new ApiAuthParams() { AccessToken = "token" });

    while (true)
    {
    WorkStatus();
    KeyboardBuilder board = new KeyboardBuilder(isOneTime: false);
    var s = api.Groups.GetLongPollServer(id Группы);
    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.Body.ToLower();
    Console.WriteLine(userMessage);
    long? userId = a.Message.UserId;
    if (userMessage == "начать")
    {
    SendMessage("Приветствую, здесь мы платим за вашу верификацию на официальных сайтах!⭐ Отзывы: vk.com / topic - 208619546_48060903✅ Вы возвращены в главное меню!", userId);
    }
    }
    }
    }



    }
    public static void SendMessage(string message, long? userID)
    {
    Random rn = new Random();
    api.Messages.Send(new MessagesSendParams
    {
    RandomId = rn.Next(),
    UserId = userID,
    Message = message
    });

    }

    public static void WorkStatus()
    {

    Console.WriteLine("Работает");
    Thread.Sleep(10000);

    }

    }
    }

     
    1. Посмотреть предыдущие комментарии (6)
    2. vtlstolyarov
      утин, а ты запусти и удивишься что теперь оно не падает с NullReferenceException
    3. vtlstolyarov
      Minin_inactive4471240, это потому что там пустое сообщение, удивительно, да?
    4. утин
      vtlstolyarov, так он же не шлет пустое сообщение...
  6. r3xq1
    Короче, вот с соседнего борда, думаю разберёшься чо не так.
    C#
    using System;
    using System.Collections.Generic;
    using System.Threading;
    using VkNet;
    using VkNet.Enums.SafetyEnums;
    using VkNet.Model;
    using VkNet.Model.Keyboard;
    using VkNet.Model.RequestParams;
    //подключаем нужные библиотеки
    namespace smm
    {
    class Program
    {
    static void Main(string[] args)
    {
    var api = new VkApi(); //создаём объект для работы с ап
    api.Authorize(new ApiAuthParams
    {
    AccessToken = "0b8e8ae40618187f98aef8ee1f13d3e7555d8fad25d6015ca96dd3f2de4bce6f2edd36de1b4127d0f" //токен сюда
    });
    while (1 > 0) //бесконечный цикл
    {
    var dialogs = api.Messages.GetConversations(new GetConversationsParams() //получаем обновления в нашей группе
    {
    Filter = VkNet.Enums.SafetyEnums.GetConversationFilter.Unread //в частности, новые сообщения
    });
    if (Convert.ToInt16(dialogs.UnreadCount) > 0) //если есть новые сообщения - отвечаем на них
    {
    var keyboard = new MessageKeyboard //господа, я решил добавить клавиатуру,
    { //вы можете удалить этот var keyboard, пофигу
    Buttons = new List<List<MessageKeyboardButton>>
    {
    new List<MessageKeyboardButton>
    {
    new MessageKeyboardButton
    {
    Action = new MessageKeyboardButtonAction
    {
    Type = KeyboardButtonActionType.Text, //Тип кнопки клавиатуры
    Label = "Приветик!", //Надпись на кнопке
    },
    Color = KeyboardButtonColor.Default //Цвет кнопки
    }
    }
    }
    }; // }; <-заканчиваем описывать нашу клавиатуру на последней скобке
    string lastmessage = dialogs.Items[0].LastMessage.Text; //последнее сообщение
    long peer_id = dialogs.Items[0].Conversation.Peer.Id; //айди чата
    string bot_answer = "yes, I am.";
    api.Messages.Send(new MessagesSendParams()
    {
    PeerId = peer_id,
    Message = bot_answer,
    RandomId = new Random().Next(minValue: 0, maxValue: 10000), //очень важная строка, хуй вы че без нее сделаете
    Keyboard = keyboard //если клавиатура не нужна - удалите этот параметр
    });
    }
    Thread.Sleep(1000); //останавливаемся на секунду, просто чтобы не душить вк
    }
    }
    }
    }
     
Загрузка...
Top