Как телеграм бот на основе telegraf выпустить через прокси сервер?

Всем привет!

пишу телеграм бота посредством библиотеки telegraf. Нашёл простой пример на JS:
const telegraf = require('telegraf');
const SocksAgent = require('socks5-https-client/lib/Agent');
const socksAgent = new SocksAgent({
  socksHost: 'localhost',
  socksPort: 9050
});
const telegrammToken = 'token';
const bot = new telegraf(telegrammToken, {
  telegram: {
    agent: socksAgent
  }
});
bot.start(ctx => ctx.reply('Welcome'));
bot.help(ctx => ctx.reply('Send me a sticker'));
bot.on('sticker', ctx => ctx.reply(''));
bot.hears('hi', ctx => ctx.reply('Hey there'));
bot.launch();

Оно работает.

Но я пишу на TypeScript и пытаюсь переписать:
import SocksProxyAgent from 'socks-proxy-agent/dist/agent';
import { Telegraf } from 'telegraf';
import { telegramToken } from './config/botConfig';
const socksAgent = new SocksProxyAgent({
  host: 'localhost',
  port: 9050
});
const bot = new Telegraf(telegramToken, {
  telegram: {
    agent: socksAgent
  }
});
...


по началу ругался что нет types.
задекларировал (как смог)
declare module 'socks5-https-client/lib/Agent' {
  import * as tls from 'tls';
  import * as https from 'https';

  interface IAgentOptions extends https.AgentOptions, tls.ConnectionOptions {
    rejectUnauthorized?: boolean;
    maxCachedSessions?: number;
  }

  // eslint-disable-next-line @typescript-eslint/no-unused-vars
  class Agent extends https.Agent {
    constructor(options?: IAgentOptions);
    options: IAgentOptions;
    private createConnection(options: {}): any;
  }
}

и теперь на строке
const bot = new Telegraf(telegramToken, {
  telegram: {
    agent: socksAgent
  }
});

ошибку:
No overload matches this call.
...

подскажите, что не так ...
может кто писал бота на TypeScript и Telegraf с использованием прокси.

Спасибо
  • Вопрос задан
  • 732 просмотра
Решения вопроса 1
2chevskii
@2chevskii
Если бы каждый мог в поиск, тостер бы вымер.
Скорее всего, изза импорта деструктуризацией (или как там эта {} хрень называется). Попробуйте import Telegraf вместо import {Telegraf}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы