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())
app.post('/', (req, res) => {
vkToTg.send(req, res)
.then(() => console.log('Done!'))
.catch((err) => {
console.log('Something went wrong')
console.log(err)
})
})
app.listen(80, ()=>{
console.log('listening on port 80')
})
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(bodyParser())
app.use(async ctx => {
const result = await vkToTg.send(ctx)
console.log(result)
})
AlexandriA (AAR) | PanzerSofa | Олег Ливанов | ongoing research |
аниреакт | Otaku Squad | disgusting otaku | Fond SpeedWagona |
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. |
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: https://vk.com/apps?act=manage | |||
2. Open settings in created application and copy application id | |||
3. Open this link with replace your application id: | |||
https://oauth.vk.com/authorize?client_id=YOUR APPLICATION ID&display=page&redirect_uri=http://vk.com/&scope=offline,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="https://vk.com/poll${poll.owner_id}_${poll.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="https://vk.com/id${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