const ISO6391 = require('iso-639-1')
const _ = require('lodash')
function getLanguageName(isocode) {
try {
return ISO6391.getName(isocode)
} catch (err) {
console.error(err)
return "Unknown"
}
}
function kFormatter(num) {
return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
let quotedMessage = ''
event.full_text.split('\n').forEach(line => quotedMessage = quotedMessage + '> ' + line + '\n' )
const language = `${getLanguageName(event.lang)} (${event.lang})`
let type = "Original Tweet"
let intro = "New mention"
if (event.in_reply_to_status_id) {
type = "Reply"
intro = "New reply"
}
if (event.retweeted_status) {
type = "Retweet"
intro = "Retweet"
}
const tweetUrl = `https://twitter.com/${event.user.screen_name}/statuses/${event.id_str}`
const userUrl = `https://twitter.com/${event.user.screen_name}/`
const mediaUrl = _.get(steps, 'trigger.event.extended_entities.media[0].media_url_https', '')
const mediaType = _.get(steps, 'trigger.event.extended_entities.media[0].type', '')
const blocks = []
blocks.push({
"type": "section",
"text": {
"type": "mrkdwn",
"text": `*<${tweetUrl}|${intro}> by <${userUrl}|${event.user.screen_name}> (${event.created_at}):*\n${quotedMessage}`
},
"accessory": {
"type": "image",
"image_url": event.user.profile_image_url_https,
"alt_text": "Profile picture"
}
})
if(mediaUrl !== '' && mediaType === 'photo') {
blocks.push({
"type": "image",
"image_url": mediaUrl,
"alt_text": "Tweet Image"
})
}
blocks.push({
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": `*User:* ${event.user.screen_name}`
},
{
"type": "mrkdwn",
"text": `*Followers:* ${kFormatter(event.user.followers_count)}`
},
{
"type": "mrkdwn",
"text": `*Location:* ${event.user.location}`
},
{
"type": "mrkdwn",
"text": `*Type:* ${type}`
},
{
"type": "mrkdwn",
"text": `*Original Language:* ${language}`
},
{
"type": "mrkdwn",
"text": `*Description:* ${event.user.description}`
}
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View on Twitter",
"emoji": true
},
"url": tweetUrl
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": `Sent via <https://pipedream.com/@/${steps.trigger.context.workflow_id}|Pipedream>`
}
]
},
{
"type": "divider"
})
return blocks
const ISO6391 = require('iso-639-1')
const _ = require('lodash')
function getLanguageName(isocode) {
try {
return ISO6391.getName(isocode)
} catch (err) {
console.error(err)
return "Unknown"
}
}
function kFormatter(num) {
return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)
}
let quotedMessage = ''
event.full_text.split('\n').forEach(line => quotedMessage = quotedMessage + '> ' + line + '\n' )
const language = `${getLanguageName(event.lang)} (${event.lang}