node-telegram-bot-api icon indicating copy to clipboard operation
node-telegram-bot-api copied to clipboard

Make the user start redirected to the channel

Open BimoSora opened this issue 3 years ago • 2 comments

How is the code to set this when the start starts the user is asked to join the channel first? https://api.telegram.org/bot[TOKEN]/getChatMember?chat_id=@[channelname]&user_id=[user_id

This is my start code

bot.start(async(ctx)=>{

    msg = ctx.message.text
    let msgArray = msg.split(' ')
    console.log(msgArray.length);
    let length = msgArray.length
    msgArray.shift()
    let query = msgArray.join(' ')

    user ={
        first_name:ctx.from.first_name,
        userId:ctx.from.id
    }

    //welcoming message on /start and if there is a query available we can send files

    if(length == 1){
        ctx.reply(`${ctx.from.first_name} \n\nSaya akan menyimpan file untuk Anda dan memberikan tautan yang dapat dibagikan, saya juga dapat membuat file tersedia untuk semua pengguna. Bot mendukung pencarian dan <a href="t.me/mdtohtmlbot">HTML</a>.`,{
            parse_mode:'HTML',
            reply_markup:{
                inline_keyboard:[
                    [{text:'Pencarian',switch_inline_query:''},{text:'Tautan',callback_data:'POP'}],
                    [{text:'Owner 1', url: 'https://t.me/aa'},{text:'Owner 2', url: 'https://t.me/aa'}],
                    [{text:'Gabung Channel', url: 'https://t.me/aa}]
                ]
            }
        })
    }else{
        file = await saver.getFile(query).then((res)=>{
            console.log(res);
            if(res.type=='video'){
                ctx.replyWithVideo(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }else if(res.type=='photo'){
                ctx.replyWithPhoto(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }else{
                ctx.replyWithDocument(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }            
        })
    }
    //saving user details to the database

    saver.saveUser(user)   
    
})

BimoSora avatar Jul 12 '21 06:07 BimoSora

I think it may help you: issue #645

effort99 avatar Jul 19 '21 02:07 effort99

This is other library 😅

IscoV avatar Jul 20 '22 10:07 IscoV

How is the code to set this when the start starts the user is asked to join the channel first? https://api.telegram.org/bot[TOKEN]/getChatMember?chat_id=@[channelname]&user_id=[user_id

This is my start code

bot.start(async(ctx)=>{

    msg = ctx.message.text
    let msgArray = msg.split(' ')
    console.log(msgArray.length);
    let length = msgArray.length
    msgArray.shift()
    let query = msgArray.join(' ')

    user ={
        first_name:ctx.from.first_name,
        userId:ctx.from.id
    }

    //welcoming message on /start and if there is a query available we can send files

    if(length == 1){
        ctx.reply(`${ctx.from.first_name} \n\nSaya akan menyimpan file untuk Anda dan memberikan tautan yang dapat dibagikan, saya juga dapat membuat file tersedia untuk semua pengguna. Bot mendukung pencarian dan <a href="t.me/mdtohtmlbot">HTML</a>.`,{
            parse_mode:'HTML',
            reply_markup:{
                inline_keyboard:[
                    [{text:'Pencarian',switch_inline_query:''},{text:'Tautan',callback_data:'POP'}],
                    [{text:'Owner 1', url: 'https://t.me/aa'},{text:'Owner 2', url: 'https://t.me/aa'}],
                    [{text:'Gabung Channel', url: 'https://t.me/aa}]
                ]
            }
        })
    }else{
        file = await saver.getFile(query).then((res)=>{
            console.log(res);
            if(res.type=='video'){
                ctx.replyWithVideo(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }else if(res.type=='photo'){
                ctx.replyWithPhoto(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }else{
                ctx.replyWithDocument(res.file_id,{caption: `${res.caption} \n\n<b>Selamat menikmati.</b>`,
            parse_mode:'HTML'})
            }            
        })
    }
    //saving user details to the database

    saver.saveUser(user)   
    
})

If what you want to check is if the user after doing /start and that you send him a message with the link to the channel. You can use the event "chat_member" for check when the user is join to the channel.

But also you can check if the user is member of this channel using bot.getChatMember('Channel Id or alias @...', 'userId').

Your bot need to be a admin in the channel that you want to check.

danielperez9430 avatar Aug 14 '22 23:08 danielperez9430