Untitled
unknown
plain_text
2 years ago
31 kB
8
Indexable
const express = require('express');
const { Telegraf, Scenes, session} = require('telegraf');
const { MongoClient } = require('mongodb');
const axios = require('axios');
const { CronJob } = require('cron');
const app = express();
const token = "6759891586:AAFJ-jxw7-8DVWrkiblx1QVACNj3OaiOYYk";
const bot = new Telegraf(token);
const { Stage, BaseScene, WizardScene } = Scenes;
const mongoURL = 'mongodb+srv://judgetorres:judgetorres1234@judgetorres.64yjcqg.mongodb.net/?retryWrites=true&w=majority';
process.on('uncaughtException', (error) => {
console.error('Uncaught Exception:', error);
});
const client = new MongoClient(mongoURL);
let db, stark;
// CONFIGMENT OF THE TWITTER API
const bearerToken = 'AAAAAAAAAAAAAAAAAAAAAF2esAEAAAAA6YgKnoonlVuvnxy6PVwzUeSFCnE%3DehHWdCbfdZ8O48u0XpbvElljT8LTOwlitntlldI4pe2ILRab5l';
const apiKey = 'pM2dGlCG77SgsRNo6HjAK00ul';
const apiSecretKey = 'boNFiHzxdHzHOdW4A6CFGriYEnFOARr37g3Jro6B4lfJy05cUb';
const accessToken = '1655168769361170433-vKDZKSjnoGAXx0NSRSNFUOVom0Z9wx';
const accessTokenSecret = 'COykXJICCojzTODhvHe4aAgCN9z7GQN41VWBVhoAOcuud';
const adminTwitterUsername = "1303216614515585027";
const tweetId = '1599222382417231872';
const tokenConfig = {
auth: {
username: apiKey,
password: apiSecretKey,
},
};
const config = {
headers: {
Authorization: `Bearer ${bearerToken}`,
},
};
axios.post('https://api.twitter.com/oauth2/token', 'grant_type=client_credentials', tokenConfig)
.then(console.log("Twitter Auth Authenticated"))
.catch(err => console.log(err));
// get user twitter id
async function getUserTwitterId(username) {
const url = `https://api.twitter.com/2/users/by/username/${username}`;
try {
const res = await axios.get(url, config);
console.log(res.data);
return res.data.data.id;
} catch (err) {
console.error(err.message);
return null;
}
}
//
// get if user is following me
/*async function isUserFollowingMe(username){
const getAccessToken = async () => {
try {
const resp = await axios.post(
'https://api.twitter.com/oauth2/token',
'',
{
params: {
'grant_type': 'client_credentials'
},
auth: {
username: apiKey,
password: apiSecretKey
}
}
);
return resp.data.access_token
} catch (err) {
console.error(err);
return;
}
};
const getFollowers = async (token, user_id, max_number) => {
try {
const resp = await axios.get(
`https://api.twitter.com/2/users/${user_id}/followers`,
{
headers: {
'Authorization': 'Bearer '+ token,
},
params: {
'user.fields': 'name,username',
'max_results': max_number
}
}
);
return resp.data;
} catch (err) {
console.log(err)
return err
}
};
getAccessToken()
.then((token) => {
getFollowers(token, adminTwitterUsername, 1000)
.then((result) => {
console.log(JSON.stringify(result, null, 4));
})
.catch(error => console.log(JSON.stringify(error)));
})
.catch(error => console.log(JSON.stringify(error)));
}*/
//
// END OF THE TWITTER API
//isUserFollowingMe("kingstarofficia");
//getUserTwitterId("kingstarofficia");
bot.use(session());
const stage = new Stage();
bot.use(stage.middleware());
const admin = 6354552851;
const cur = "points"
async function connectToDatabase(){
try {
await client.connect();
db = await client.db('CEOAKDBOT');
stark = await db.collection("All-Users");
console.log(`Connected to database`);
} catch (err) {
console.log(`Error connect database`);
console.log(err);
}
}
connectToDatabase(true);
const channels = [
"cartmoreelogs",
"cartmoreelogs"
]
async function getUser(user) {
try {
const u = await stark.findOne({user: user});
return u;
} catch (err) {
console.log(err);
return null;
}
}
async function addUser(user){
try {
await stark.insertOne(user);
return true;
} catch (err) {
console.log(err)
return null;
}
}
async function updateUser(user,data){
try {
const res = await stark.updateOne({user: user},data);
return true;
} catch (err) {
console.log(err)
return null;
}
}
async function allUser() {
try {
const res = await stark.find({}).toArray();
return res;
} catch (err) {
console.log(err)
return null;
}
}
async function updateLeaderboard(interval) {
function getStartDate(daysAgo) {
const startDate = new Date();
startDate.setDate(startDate.getDate() - daysAgo);
return startDate;
}
const startDate = getStartDate(interval === 'daily' ? 1 : interval === 'weekly' ? 7 : 30);
const endDate = new Date();
const users = await stark.find({referral: {$gte: 1},lastReferralTime: {$gte: startDate,$lt: endDate}}).toArray();
const count = 15;
if(!users){
console.log("No Users found in the "+interval+" contest");
return;
}
if(users.length === 0){
console.log("No Users found in the "+interval+" contest");
return;
}
const userr = await users.sort((a,b) => b.referral - a.referral);
const pointEarned = interval === 'daily' ? 50000 : interval === 'weekly' ? 100000 : 200000;
const winner = await userr[0];
updateUser(winner.user,{$inc: {balance: pointEarned}});
const winner2 = await userr[1];
const winner3 = await userr[2];
const winnerAdminText = `
<b>π Congratulations to the winners of the ${interval} contest! π</b>
<b>π Winner:</b> (${winner.user})
π° Reward: ${pointEarned} points
<b>π Congratulations to the the winners! π</b>
<i>Winner: (${winner.user}) has get ${pointEarned} points added to his/her balance.</i>
`;
const winnerUserText = `
<b>π Congratulations to you, </b>π You <b>won </b>the ${interval} contest! π
<b>π° Reward:</b> ${pointEarned} points.
`;
if (winner){
bot.telegram.sendMessage(winner.user,winnerUserText,{parse_mode: 'HTML'});
}
bot.telegram.sendMessage(admin,winnerAdminText,{parse_mode: 'HTML'});
}
function setupCronJobs() {
const dailyJob = new CronJob('0 0 * * *', () => updateLeaderboard('daily'), null, true, 'UTC');
const weeklyJob = new CronJob('0 0 * * 1', () => updateLeaderboard('weekly'), null, true, 'UTC');
const monthlyJob = new CronJob('0 0 1 * *', () => updateLeaderboard('monthly'), null, true, 'UTC');
dailyJob.start();
weeklyJob.start();
monthlyJob.start();
console.log('Leaderboard Contest Started');
}
async function mainMenu(ctx,txt = null) {
const text = `
${txt || ''}
ππ» Hello Mr. <b>${ctx.from.first_name}</b>! Welcome To Our Bot (${ctx.botInfo.first_name})
π Your position on the airdrop bot are not final, and the valid participants will be <b>rewarded</b> if they are among the top referrers or random winners.
<i>π You can use the buttons below to check your balance, Check The Leaderboard, and find useful.</i>
π <b>Official Website:</b> <i>https://dontbuythistoken.com</i>
π <b>For Support Contact:</b> <a href="https://t.me/CEOAKD365">Official Support</a>
`;
const keys = [
[
{
text: "πΆ Points Earned"
}
],
[
{
text: "π©βπ§βπ¦ Referral"
},
{
text: "π³ Claim"
}
],
[
{
text: "π Leaderboard"
}
]
]
ctx.reply(text, {
parse_mode: "HTML",
reply_markup: {
keyboard: keys,
resize_keyboard: true
},
disable_web_page_preview: true
});
}
bot.start(async (ctx) => {
const userId = ctx.from.id;
const name = ctx.from.first_name || "Boss π"
const newUser = await getUser(userId);
if (newUser && newUser.verify && newUser.verify === true){
mainMenu(ctx);
return;
}
let upline = null;
let param = ctx.message.text.split(" ");
let [, ...newparam ] = param;
if (!Array.isArray(newparam)){
ctx.reply("π€― Sorry, An error occured");
return;
}
newparam = newparam[0] || "nothing";
if (!newparam.includes('newUser')){
if (!isNaN(newparam) && newparam.length === 10 && newparam != userId){
upline = newparam;
}
if (!newUser){
addUser({
user: userId,
upline: upline,
balance: 0,
demoWallet: null,
verifyWallet: null,
referral: 0,
downlines: [],
last_bonus_time: null,
verify: false,
ban: false
});
}
ctx.reply('ππ» Hi '+name+'!, Welcome to the bot!',{
reply_markup: {
inline_keyboard: [
[
{
text: "βπ» Register on Website",
web_app: {
url: "https://starknil.000webhostapp.com/ceoakdbot.html"
}
}
]
]
}
});
return;
}
if (!newparam.startsWith('newUser')){
ctx.reply(JSON.stringify(more.length));
ctx.reply("π€― Sorry, An error occured 2");
return;
}
const more = newparam.split("_");
if (more.length !== 3){
ctx.reply("π€― Sorry, An error occured 3");
return;
}
let [ ourUser, isVerify, wallet] = more;
isVerify = isVerify.split("=")[1];
wallet = wallet.split("=")[1];
if (isVerify !== "true"){
ctx.reply("Invalid Registration");
return;
}
await updateUser(userId,{$set: {demoWallet: wallet}})
const txt = "ππ» Hi "+name+"!, Join our channels now!";
const keyboards = [];
for (const chan of channels){
keyboards.push([
{
text: "π Join "+chan,
url: "https://t.me/"+chan
}
]);
}
keyboards.push([
{
text: "β
Joined",
callback_data: "chckchan"
}
])
ctx.reply(txt, {
reply_markup: {
inline_keyboard: keyboards
}
});
});
//////// Check mandatory channels
bot.action("chckchan", async (ctx) =>{
const msg_id = ctx.update.callback_query.message.message_id;
const userId = ctx.from.id;
let c = 0;
for (const channel of channels){
try {
const res = await ctx.telegram.getChatMember(`@${channel}`, userId);
if(res.status == "left"){
break;
}else{
c++
}
} catch (err) {
ctx.answerCbQuery();
ctx.reply("An error occurred while checking the channel membership. Please try again later.");
console.log(err)
return;
}
}
if (channels.length != c){
ctx.answerCbQuery("β Sorry, please join the telegram groups",{show_alert: true});
return;
}
const mine = await getUser(userId);
if (!mine){
ctx.reply("Cant find your account, please register first");
return;
}
const upline = mine.upline;
const mee = mine.mandatoryJoinGift;
if (!mee){
ctx.answerCbQuery("β
You Earned 10 points for joining",{show_alert: true});
await updateUser(userId,{$set: {mandatoryJoinGift: true},$inc: {balance: 10}});
}
try {
await ctx.answerCbQuery();
} catch (err) {
console.log(err)
}
const twiterLink = "https://x.com/dbtteth";
ctx.editMessageText(`
- Follow, comment, like, and retweet a post ${twiterLink}: and send your Twitter username.
`);
const twit = new BaseScene("twitter"+userId);
twit.enter();
twit.on('text',async ctx => {
let tw = ctx.message.text;
ctx.deleteMessage();
if (tw.length < 5){
try {
await ctx.telegram.editMessageText(userId,msg_id,null,"Provide a valid twiter username without @")
} catch (error) {
console.log(err)
return error;
}
return;
}
if (tw.startsWith("@")){
tw = tw.slice(1);
}
const twid = await getUserTwitterId(tw);
if(!twid){
try {
await ctx.telegram.editMessageText(userId,msg_id,null,"Invalid Twitter account")
} catch (err) {
console.log(err);
}
return;
}
await ctx.scene.leave();
updateUser(userId,{$set: {twitter: tw}});
const userr = await getUser(userId);
if (!userr){
return;
}
const meee = userr.twiterGift;
const demoWallet = userr.demoWallet;
const upline = userr.upline;
if (!meee){
await ctx.telegram.editMessageText(userId,msg_id,null,"β
You earned 10 points.");
}
const walleti = new BaseScene("wallet"+userId);
walleti.enter(ctx => { ctx.telegram.editMessageText(userId,msg_id,null,"Now please provide us your ETH wallet address\nNote: Must be same as use on the bot website\n\nEnter <code>0x12345</code>",{parse_mode: "HTML"});
});
walleti.on('text',async (ctx) => {
ctx.deleteMessage();
const wallet = ctx.message.text;
if (wallet != demoWallet){
try {
await ctx.telegram.editMessageText(userId,msg_id,null,"β Wallet address must be same as the wallet on the bot website");
} catch (err) {
console.log(err);
ctx.reply("You deleted an expected message which caused a error, Please restart te bot again");
return;
}
return;
}
await ctx.scene.leave();
await updateUser(userId,{$set: {verifyWallet: wallet,verify: true}});
try {
await ctx.telegram.deleteMessage(userId,msg_id);
} catch (err) {
console.log(err);
}
if (upline){
try {
await updateUser(parseFloat(upline),{$inc: {referral: 1,balance: 5},$push: {downlines: userId},$set: {lastReferralTime: new Date()}});
await ctx.telegram.sendMessage(parseFloat(upline),"β New refer just joined through your link\nyou earned 5 points");
} catch (err) {
console.log(err)
}
}
mainMenu(ctx,"<b>β
Congratulations, You are fully verified.</b>");
});
walleti.use(async ctx => {
ctx.deleteMessage();
try{
await ctx.telegram.editMessageText(userId,msg_id,null,"Enter a valid ETH wallet address");
}catch(err){
console.log(err)
return;
}
});
stage.register(walleti);
ctx.scene.enter("wallet"+userId);
});
twit.use(async (ctx) => {
try {
ctx.deleteMessage();
await ctx.telegram.editMessageText(userId,msg_id,null,"Provide a valid twiter username")
} catch (err) {
console.log(err)
return;
}
});
stage.register(twit);
ctx.scene.enter("twitter"+userId);
});
// Top Daily Earners Code
bot.hears('π Leaderboard',async ctx => {
function getStartDate(daysAgo) {
const startDate = new Date();
startDate.setDate(startDate.getDate() - daysAgo);
return startDate;
}
const interval = 'Daily';
const startDate = getStartDate(interval === 'Daily' ? 1 : interval === 'Weekly' ? 7 : 30);
const endDate = new Date();
const idd = await ctx.replyWithHTML("<i>π Started Gathering Leaderboard...</i>");
const msg_id = idd.message_id;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Gathering Leaderboard...</i>",{
parse_mode: "HTML"
});
const users = await stark.find({referral: {$gte: 1},lastReferralTime: {$gte: startDate,$lt: endDate}}).toArray();
const count = 15;
if(!users){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
if(users.length === 0){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
const userr = await users.sort((a,b) => b.referral - a.referral);
const userrs = await userr.slice(0,count);
let txt = "<b>π Top "+count+" "+interval+" Leaderboard Users π</b>\n\n";
;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Started Forming Leaderboard...</i>",{
parse_mode: "HTML"
});
const middle = Math.floor(userrs.length/2);
let i = 1;
for (const user of userrs){
if (i == middle){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Forming Leaderboard 50%...</i>",{
parse_mode: "HTML"
});
}
const userId = user.user;
const referral = user.referral;
const bal = user.balance;
const details = await ctx.telegram.getChat(user.user);
let tag;
if (i === 1){
tag = "π₯";
}else if (i === 2){
tag = "π₯";
} else if (i === 3){
tag = "π₯";
}else{
tag = ` ${i}`;
}
if (details.id != 6287539358){
txt += `${tag} β’ <a href="tg://user?id=${details.id}">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}else{
txt += `${tag} β’ <a href="">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}
i += 1;
}
txt += `
<b>Daily Rank:</b> 50,000 $DBTT ($98)
<b>Weekly Rank:</b> 100,000 $DBTT ($196)
<b>Monthly Rank:</b> 200,000 $DBTT ($392)
<i>By completing the airdrop tasks, you will earn points and climb the leaderboard. The top leaderboard users will receive a bonus <b>$DBTT</b> reward at the end of the Dally,Weekly,Monthly</i>
`;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,txt,{
parse_mode: "HTML",
reply_markup: {
inline_keyboard: [
[
{
text: "π Weekly Leaderboard π",
callback_data: "weeklyb"
}
],
[
{
text: "π Monthly Leaderboard π",
callback_data: "monthlyb"
}
]
]
}
});
});
// Top Weekly Earners Code
bot.action('weeklyb',async ctx => {
function getStartDate(daysAgo) {
const startDate = new Date();
startDate.setDate(startDate.getDate() - daysAgo);
return startDate;
}
const interval = 'Weekly';
const startDate = getStartDate(interval === 'Daily' ? 1 : interval === 'Weekly' ? 7 : 30);
const endDate = new Date();
const msg_id = ctx.update.callback_query.message.message_id;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Gathering Leaderboard...</i>",{
parse_mode: "HTML"
});
const users = await stark.find({referral: {$gte: 1},lastReferralTime: {$gte: startDate,$lt: endDate}}).toArray();
const count = 15;
if(!users){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
if(users.length === 0){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
const userr = await users.sort((a,b) => b.referral - a.referral);
const userrs = await userr.slice(0,count);
let txt = "<b>π Top "+count+" "+interval+" Leaderboard Users π</b>\n\n";
;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Started Forming Leaderboard...</i>",{
parse_mode: "HTML"
});
const middle = Math.floor(userrs.length/2);
let i = 1;
for (const user of userrs){
if (i == middle){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Forming Leaderboard 50%...</i>",{
parse_mode: "HTML"
});
}
const userId = user.user;
const referral = user.referral;
const bal = user.balance;
const details = await ctx.telegram.getChat(user.user);
let tag;
if (i === 1){
tag = "π₯";
}else if (i === 2){
tag = "π₯";
} else if (i === 3){
tag = "π₯";
}else{
tag = ` ${i}`;
}
if (details.id != 6287539358){
txt += `${tag} β’ <a href="tg://user?id=${details.id}">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}else{
txt += `${tag} β’ <a href="">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}
i += 1;
}
txt += `
<b>Daily Rank:</b> 50,000 $DBTT ($98)
<b>Weekly Rank:</b> 100,000 $DBTT ($196)
<b>Monthly Rank:</b> 200,000 $DBTT ($392)
<i>By completing the airdrop tasks, you will earn points and climb the leaderboard. The top leaderboard users will receive a bonus <b>$DBTT</b> reward at the end of the Dally,Weekly,Monthly</i>
`;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,txt,{
parse_mode: "HTML",
reply_markup: {
inline_keyboard: [
[
{
text: "π Monthly Leaderboard π",
callback_data: "monthlyb"
}
]
]
}
});
});
// Top Weekly Earners Code
bot.action('monthlyb',async ctx => {
function getStartDate(daysAgo) {
const startDate = new Date();
startDate.setDate(startDate.getDate() - daysAgo);
return startDate;
}
const interval = 'Monthly';
const startDate = getStartDate(interval === 'Daily' ? 1 : interval === 'Weekly' ? 7 : 30);
const endDate = new Date();
const msg_id = ctx.update.callback_query.message.message_id;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Gathering Leaderboard...</i>",{
parse_mode: "HTML"
});
const users = await stark.find({referral: {$gte: 1},lastReferralTime: {$gte: startDate,$lt: endDate}}).toArray();
const count = 15;
if(!users){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
if(users.length === 0){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"No user have a referral in this Bot.",{
parse_mode: "HTML"
});
return;
}
const userr = await users.sort((a,b) => b.referral - a.referral);
const userrs = await userr.slice(0,count);
let txt = "<b>π Top "+count+" "+interval+" Leaderboard Users π</b>\n\n";
;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Started Forming Leaderboard...</i>",{
parse_mode: "HTML"
});
const middle = Math.floor(userrs.length/2);
let i = 1;
for (const user of userrs){
if (i == middle){
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,"<i>π Forming Leaderboard 50%...</i>",{
parse_mode: "HTML"
});
}
const userId = user.user;
const referral = user.referral;
const bal = user.balance;
const details = await ctx.telegram.getChat(user.user);
let tag;
if (i === 1){
tag = "π₯";
}else if (i === 2){
tag = "π₯";
} else if (i === 3){
tag = "π₯";
}else{
tag = ` ${i}`;
}
if (details.id != 6287539358){
txt += `${tag} β’ <a href="tg://user?id=${details.id}">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}else{
txt += `${tag} β’ <a href="">${details.first_name || details.last_name}</a> - <b>${referral} points</b>\n`;
}
i += 1;
}
txt += `
<b>Daily Rank:</b> 50,000 $DBTT ($98)
<b>Weekly Rank:</b> 100,000 $DBTT ($196)
<b>Monthly Rank:</b> 200,000 $DBTT ($392)
<i>By completing the airdrop tasks, you will earn points and climb the leaderboard. The top leaderboard users will receive a bonus <b>$DBTT</b> reward at the end of the Dally,Weekly,Monthly</i>
`;
ctx.telegram.editMessageText(ctx.from.id,msg_id,null,txt,{
parse_mode: "HTML",
reply_markup: {
inline_keyboard: [
[
{
text: "π Weekly Leaderboard π",
callback_data: "weeklyb"
}
]
]
}
});
});
//////
bot.command('add',async (ctx) => {
updateUser(ctx.from.id,{$set: {lastReferralTime: new Date()}});
});
//////
// Balance button code
bot.hears("πΆ Points Earned",async (ctx) => {
const userId = ctx.from.id;
const userr = await getUser(userId);
if (!userr){
ctx.reply("Cant find your account, please register first");
return;
}
const referral = userr.referral;
const bal = userr.balance;
let txt;
if (referral == 0){
txt = "<s>Not in Leaderboard</s>";
}else{
const users = await stark.find({referral: {$gte: 0}}).toArray();
const count = 10;
if(!users){
txt = "<s>Not in Leaderboard</s>";
return;
}
if(users.length === 0){
txt = "<s>Not in Leaderboard</s>";
return;
}
const userr = await users.sort((a,b) => b.referral - a.referral);
const userrs = await userr.slice(0,count);
const check = userrs.some(x => x.user == userId);
if (check){
const c = userrs.findIndex(x => x.user == userId);
txt = c+1+" in Leaderboard";
}else{
txt = "<s>Not in Leaderboard</s>";
}
}
ctx.replyWithHTML(`
πΆ You have earned <b>${bal} points</b>. You have invited <b>${referral} user(s)</b>.
<b>π Your Position:</b> ${txt}
β
<u>Your Provided Data</u>
πͺΏ <b>Twitter:</b> ${userr.twitter || "Not Provided"}
π³ <b>Connected Address:</b>
<code>${userr.verifyWallet}</code>
<i>π²The top referrals can each get more tokens.</i>
`);
});
// Referral button code
bot.hears("π©βπ§βπ¦ Referral",async (ctx) => {
const userId = ctx.from.id;
const userr = await getUser(userId);
if (!userr){
ctx.reply("Cant find your account, please register first");
return;
}
const upline = userr.upline;
const referral = userr.referral;
const bal = userr.balance;
const downlines = userr.downlines;
const refLink = "https://t.me/"+ctx.botInfo.username+"?start="+userId;
let txt = `
<b>π’You invited ${referral} people and have a chance to get $10 in points tokens. </b>
<i>π²You can refer more to be in top referrals to qualify on the leaderboard and get a huge banefits.</i>
<b>πreferral link:</b> <i>${refLink}</i>
`;
ctx.replyWithHTML(txt);
});
// Claim button code
bot.hears("π³ Claim",async (ctx) => {
const userId = ctx.from.id;
const userr = await getUser(userId);
if (!userr){
ctx.reply("Cant find your account, please register first");
return;
}
const referral = userr.referral;
const bal = userr.balance;
const demoWallet = userr.demoWallet;
const verifyWallet = userr.verifyWallet;
let txt = `
<b>π Great news! You can now withdraw your earned points on our website.</b>
1) <i>Visit the link below.</i>
2) <i>Click on the <b>Claim Not Active</b>.</i>
3) <i>Choose your withdrawal option.</i>
4) <i>Confirm your request.</i>
<b>That's it! Your rewards will be on their way.</b>
π₯° <i>Thank you for being a part of our community!</i>
<b>---</b>
`;
ctx.reply(txt,{
parse_mode: "HTML",
reply_markup: {
inline_keyboard: [
[
{
text: "π Claim your points",
url: "https://dontbuythistoken.com/claim"
}
]
]
}
})
});
// ADMIN PART
bot.command('Panel',async (ctx) => {
if(ctx.from.id != admin){
return;
}
const user = await allUser(ctx.from.id);
const txt = `
ππ» Hey <b>${ctx.from.first_name}</b>! Welcome to the admin panel.
<b>Total Users:</b> ${user.length < 1 ? "No User" : user.length}`;
ctx.reply(txt,{
parse_mode: "HTML",
reply_markup: {
inline_keyboard: [
[
{
text: "ποΈ Send Broadcast",
callback_data: "broadcast"
}
],
[
{
text: "π Set/Change X.com link",
callback_data: "setlink"
}
]
]
}
});
});
bot.action('broadcast',async (ctx) => {
ctx.deleteMessage();
if(ctx.from.id != admin){
return;
}
await ctx.reply("Wait fetching all user in the database...");
const all_user = await allUser(ctx.from.id);
await ctx.reply("All user fetched successfully");
const broad = new BaseScene('broad');
broad.enter(ctx => {
ctx.reply("Enter the message you want to send");
});
broad.on('text', async (ctx) => {
await ctx.scene.leave();
await ctx.reply("Broadcasting message to all users...");
for (const user of all_user){
try {
await ctx.telegram.sendMessage(user.user,ctx.message.text);
} catch (err) {
console.log(err);
}
}
ctx.reply("Message broadcasted successfully");
});
stage.register(broad);
ctx.scene.enter('broad');
});
/*
bot.command("ban",async ctx => {
if(ctx.from.id != admin){
return;
}
const userId = ctx.message.text.split(" ")[1];
ctx.reply(""+userId+"");
const user = await getUser(parseFloat(userId));
if (!user){
return ctx.reply("User not found");
}
await updateUser(parseFloat(userId),{$set: {ban: true}});
ctx.reply("User banned successfully");
});
bot.command("unban",async ctx => {
if(ctx.from.id != admin){
return;
}
const userId = ctx.message.text.split(" ")[1];
const user = await getUser(parseFloat(userId));
if (!user){
return ctx.reply("User not found");
}
await updateUser(parseFloat(userId),{$set: {ban: false}});
ctx.reply("User unbanned successfully");
});
*/
bot.use(ctx => ctx.reply('π€ Sorry, I don\'t understand that'));
app.get('/', (req, res) => {
const html = `
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Verify Bot Stark Nil</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
width: 100%;
height: 50vh;
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 15px;
}
button {
padding: 10px;
background-color: #4CAF50;
color: white;
border: 1px solid grey;
border-radius: 5px;
}
</style>
</head>
<body>
<h1>Verify Bot Stark Nil</h1>
<button onclick="
window.location.href= 'https://t.me/CEOAKDAirdrop_Bot?start=newUser_verify=true_wallet=0x12345';
this.style.display = 'none';
">
<h1>
β‘οΈ Click To Redirect
</h1>
</button>
</body>
</html>
`;
res.send(html);
});
bot.launch({dropPendingUpdates: true});
const port = 3000;
app.listen(port,async () => {
await setupCronJobs();
console.log(`Server is running on port ${port}`);
});Editor is loading...
Leave a Comment