Awesome Open Source
Awesome Open Source

vk to telegram forwarder

NPM Version node


npm i vk-to-telegram --save


const app = require('express')()
const bodyParser = require('body-parser')
const vkToTelegram = require('vk-to-telegram')
const vkToTg = new vkToTelegram({
  botToken: 'your bot token',
  chatName: 'telegram chat/channel name',
  ownerId: 'your telegram id', // number
  vkToken: 'your very long token from vk api',
  vkConfirmation: 'group confirmation'
app.use(bodyParser.json())'/', (req, res) => {
  vkToTg.send(req, res)
    .then(() => console.log('Done!'))
    .catch((err) => {
      console.log('Something went wrong')

app.listen(80, ()=>{
  console.log('listening on port 80')

What is this

It is a tool for express which using VK callback api forwards posts from group in channel or chat in Telegram!


Here's example with koa2

app.use(async ctx => {
  const result = await vkToTg.send(ctx)

Used by:

AlexandriA (AAR) PanzerSofa Олег Ливанов ongoing research
аниреакт Otaku Squad disgusting otaku Fond SpeedWagona

What content does it forward

Content type Works fully?
Photo(s) Yes
Video(s) Yes
Document(s) Yes
Link Yes
Application Content Yes
Poll Yes
Audio(s) NO. Why? Read here.
Album(s) Yes
Graffiti Not tested.
Wiki Page Not tested.
Market item Not tested.
Sticker Not tested.

Free usage

If you want to test this code, or use on a regular basis (via heroku), please contact me for setup.


Variable Type Required Description
token String Yes Bot token from Botfather
chatName String Yes Telegram channel or group link, like '@tavernofheroes'
ownerId Number Yes Your telegram id for sending error if they are. U can get know it from @getidsbot
vkConfirmation String Yes Confirmation string from ur group callback api server:
vkToken String Yes Follow the instructions below:
1. Create Standalone application here:
2. Open settings in created application and copy application id
3. Open this link with replace your application id: APPLICATION ID&display=page&redirect_uri=,video,docs&response_type=token&v=5.81
4. Click allow all that need's and it's all! Your token is in query url, do not copy all link, only token without other params.
chatId Number Optional If you know your chat/channel id, put it here, it will replace chatName parameter
fromId Number Optional VK group id with '-'in start or nothing, if you don't need check.
customVkButton String Optional Title for button which will be added to each post to open it in VK
customPollTitle String Optional Custom template string in the title of button with URL to poll("Open poll" -> "Open poll - ${poll.question}")
customLongPostText String Optional Custom template string that replace full post text, because it's too long for Telegram(max 4096 characters) ("Too long post... [Read full]" -> "Too long post... <a href="${poll.owner_id}_${}">Read full" and parse as HTML)
signed String Optional Custom template string that add post signer in the end of Telegram message ("Post By" -> "\n\nPost by <a href="${post.signer_id}">${signer.first_name} ${signer.last_name}" and parse as HTML)
heroku Boolean Optional Add filter that stops forwarder if detect that post repeats(Because of app sleeping)
herokuTimeout Number Optional Heroku post delay between same posts
secret String Optional Secret field from vk admin panel to verify that post has come from VK
filterByWord String Optional Filter posts by key word(s) (use ',' as separator) (use '-' in begin of word to invert)
filterByHashtag String Optional Filter posts by hashtag (use ',' as separator) (use '-' in begin of word to invert)
ads Boolean Optional Forward posts marked as ads? (By default true)
repostAds Boolean Optional Forward reposts marked as ads? (By default true)
appendText String Optional Append text to forwarded post (can be used for hashtags for channel navigation)
prependText String Optional Same as appendText but it's will prepend it in the start of post text
repost Boolean Optional Allow to forward post with repost (By default true)
sendNativePoll Boolean Optional Use native Telegram poll instead of link to poll in VK, set false to use poll in VK
criedHalfBea Boolean Optional Use Z sized pictures as max. (Reduces pictures aliasing)
  • DON'T forget to pick in your vk group api dashboard event type 'WALL POST - NEW'.
  • Recommend to use vk api v5.103


Telegram group, Telegram, Mail

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (67,533
api (1,593
bot (683
express (468
telegram (312
callback (42
vk (36
vkontakte (25
telegraf (18

Find Open Source By Browsing 7,000 Topics Across 59 Categories