Skip to content

Instantly share code, notes, and snippets.

View SilencerWeb's full-sized avatar

Max Gorodov SilencerWeb

View GitHub Profile
require('dotenv').config();
const Telegraf = require('telegraf');
const Extra = require('telegraf/extra');
const Markup = require('telegraf/markup');
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.action(/delete_message_(.+)/, (context) => {
const messageId = context.match[1];
context.deleteMessage(messageId);
});
.products-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-bottom: -80px;
@include sm-down {
margin-bottom: -40px;
}
let productsListsMasonries = [];
const initProductsListsMasonries = () => {
const masonryOptions = {
itemSelector: '.products-list__product-card',
columnWidth: '.products-list__grid-sizer',
percentPosition: true,
gutter: getWindowOuterWidth() >= 768 ? 80 : 40,
};
const Markup = require('telegraf/markup');
const { ACTION_NAMES } = require('../constants');
const generatePostKeyboard = (id, removeCaption) => Markup.inlineKeyboard([
[
removeCaption ?
Markup.callbackButton('🖍 Remove caption', `${ACTION_NAMES.remove_post_caption.string}_${id}`)
:
Markup.callbackButton('✏️ Return caption', `${ACTION_NAMES.return_post_caption.string}_${id}`),
const { Post } = require('../models');
const { generatePostKeyboard } = require('../keyboards');
const { bot } = require('../bot');
const { CHANNELS_INFO, ACTION_NAMES, IS_PRODUCTION, DEVELOPMENT_GROUP_ID } = require('../constants');
const setUpRemovePostCaptionAction = () => {
bot.action(ACTION_NAMES.remove_post_caption.regexp, (context) => {
const id = context.match[1];
const callbackQueryId = context.update.callback_query.id;
const ACTION_NAMES = {
approve_post: {
regexp: /a_p_(.+)/,
string: 'a_p'
},
dismiss_post: {
regexp: /d_p_(.+)/,
string: 'd_p'
},
approve_post_confirmation: {
bot.telegram.sendVideo('', '', {
reply_markup: {
inline_keyboard: [
[
{
text: 'Remove caption',
callback_data: `remove_post_caption_${id}`,
},
],
[
const path = require('path');
const UglifyJsPlugin = require('uglify-js-plugin');
module.exports = {
target: 'node',
mode: 'production',
entry: {
telegram.getUserProfilePhotos(user.id, 0, 1).then((response) => {
const photos = response.photos;
const photo = photos[0];
const largePhoto = photo[2];
telegram.getFileLink(largePhoto.file_id).then((avatarLink) => {
axios.get(avatarLink).then((avatar) => {
const form = new FormData();
form.append('data', new Buffer.from(avatar.data), {
filename: 'example.jpg',
// post options
const options = {
reply_markup: {
inline_keyboard: [
[
{
text: 'Remove caption',
callback_data: 'remove_post_caption',
},
],