Skip to content

Instantly share code, notes, and snippets.

@lubien
Created February 6, 2024 12:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lubien/6c03233ec6aa21b7131abda3aa5bce5e to your computer and use it in GitHub Desktop.
Save lubien/6c03233ec6aa21b7131abda3aa5bce5e to your computer and use it in GitHub Desktop.
async function sendMessage(bot, source, items, formatter, getUrl) {
const successfullySentIds = []
for (const item of items) {
const doSend = async () => {
await bot.telegram.sendMessage(TELEGRAM_CHANNEL, formatter(source, item), {
parse_mode: 'markdown',
})
successfullySentIds.push(item.id)
}
try {
await doSend()
} catch (err) {
if (err.response && err.response.parameters && err.response.parameters.retry_after) {
const { retry_after } = err.response.parameters
console.warn(`Telegram warned about rate limits, waiting ${retry_after}s and retrying once`)
await sleep(retry_after * 1000)
await doSend()
continue
}
console.error(err)
throw err
}
}
return successfullySentIds
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment