Example #1
0
        public TelegramSender(IConfiguration configuration, ILogger <VkApi> logger)
        {
            var tokens = configuration.GetSection("Tokens").Get <TokenConfig>();

            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            _userId                    = tokens.TelegramId;
            _telegram                  = new TelegramBotClient(tokens.Telegram);
            _telegram.OnMessage       += _telegram_OnMessage;
            _telegram.OnMessageEdited += _telegram_OnMessageEdited;
            _telegram.OnCallbackQuery += _telegram_OnCallbackQuery;
            _telegram.StartReceiving();
            _vkNet = new VkApi(logger);
            _vk    = new Vkontakte(0)
            {
                AccessToken = new VkLibrary.Core.Auth.AccessToken
                {
                    Token     = tokens.Vk,
                    ExpiresIn = 0
                }
            };
            _vkNet.Authorize(new VkNet.Model.ApiAuthParams {
                AccessToken = tokens.Vk
            });

            var poolServer = _vkNet.Messages.GetLongPollServer();

            _vkPool = _vk.StartLongPollClient(poolServer.Server, poolServer.Key, (int)poolServer.Ts).GetAwaiter().GetResult();
            _vkPool.AddMessageEvent += _vkPool_AddMessageEvent;
            _httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
        }
Example #2
0
        /// <summary>
        /// Inits a LongPollClient using extended settings.
        /// Docs: <see href="https://vk.com/dev/using_longpoll">Using LongPoll</see>
        /// </summary>
        /// <param name="key">Secret session key.</param>
        /// <param name="server">Server address to which you need to send the request</param>
        /// <param name="ts">Number of the last event from which you want to receive data</param>
        /// <param name="mode">Additional answer options.</param>
        /// <param name="version">
        /// Actual version: 1. For version 0 (default), community IDs will arrive in the format
        /// group_id + 1000000000 for saving backward compatibility.
        /// We recommend using the updated version.
        /// </param>
        /// <param name="wait">
        /// Waiting period (as most proxy servers terminate the connection after 30 seconds,
        /// we recommend indicating wait = 25). Maximum: 90.
        /// </param>
        /// <returns>Running Long Poll Client instance.</returns>
        public async Task <LongPollClient> StartLongPollClient(string server, string key, int ts,
                                                               int version = 1, int wait = 25, AnswerFlags mode = AnswerFlags.ReceiveAttachments)
        {
            var client = new LongPollClient(this);
            await client.StartListener(server, key, ts, version, wait, mode);

            return(client);
        }