Update groupadd.js and index.js
This commit is contained in:
		
							
								
								
									
										87
									
								
								commands/groupadd.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								commands/groupadd.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | |||||||
|  | let targetUserIds = new Set(); | ||||||
|  | let isActive = false; | ||||||
|  | let channelToWatch = null; | ||||||
|  | let lastAddTimes = new Map(); | ||||||
|  |  | ||||||
|  | const getRandomDelay = () => { | ||||||
|  |     return Math.floor(Math.random() * 150) + 50; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | module.exports = { | ||||||
|  |     name: 'groupadd', | ||||||
|  |     description: 'Automatically re-adds users to group when they leave. Use multiple IDs for multiple targets.', | ||||||
|  |     async execute(message, args, deleteTimeout) { | ||||||
|  |         if (message.channel.type !== 'GROUP_DM') { | ||||||
|  |             message.channel.send('This command only works in group DMs.') | ||||||
|  |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (args[0]?.toLowerCase() === 'stop') { | ||||||
|  |             isActive = false; | ||||||
|  |             targetUserIds.clear(); | ||||||
|  |             lastAddTimes.clear(); | ||||||
|  |             channelToWatch = null; | ||||||
|  |             console.log('[GROUPADD] System deactivated'); | ||||||
|  |  | ||||||
|  |             message.channel.send('Group auto-add deactivated.') | ||||||
|  |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         const validIds = args.filter(id => /^\d{17,19}$/.test(id)); | ||||||
|  |         if (validIds.length === 0) { | ||||||
|  |             message.channel.send('Please provide at least one valid user ID.') | ||||||
|  |                 .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         channelToWatch = message.channel; | ||||||
|  |         targetUserIds = new Set(validIds); | ||||||
|  |         isActive = true; | ||||||
|  |  | ||||||
|  |         console.log(`[GROUPADD] System activated - Targeting users: ${Array.from(targetUserIds).join(', ')}`); | ||||||
|  |  | ||||||
|  |         for (const userId of targetUserIds) { | ||||||
|  |             try { | ||||||
|  |                 if (!channelToWatch.recipients.has(userId)) { | ||||||
|  |                     console.log(`[GROUPADD] Target ${userId} not in group, attempting initial add`); | ||||||
|  |                     await channelToWatch.addUser(userId); | ||||||
|  |                     console.log(`[GROUPADD] Initial add successful for ${userId}`); | ||||||
|  |                 } | ||||||
|  |             } catch (error) { | ||||||
|  |                 console.log(`[GROUPADD] Initial add failed for ${userId}:`, error); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         message.client.on('channelRecipientRemove', async (channel, user) => { | ||||||
|  |             if (!isActive || channel.id !== channelToWatch.id || !targetUserIds.has(user.id)) return; | ||||||
|  |  | ||||||
|  |             const currentTime = Date.now(); | ||||||
|  |             const lastAddTime = lastAddTimes.get(user.id) || 0; | ||||||
|  |             const timeSinceLastAdd = currentTime - lastAddTime; | ||||||
|  |  | ||||||
|  |             if (timeSinceLastAdd < 1000) { | ||||||
|  |                 console.log(`[GROUPADD] Rate limiting for ${user.id}, waiting...`); | ||||||
|  |                 await new Promise(resolve => setTimeout(resolve, 1000 - timeSinceLastAdd)); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             const delay = getRandomDelay(); | ||||||
|  |             console.log(`[GROUPADD] User ${user.id} left, waiting ${delay}ms before re-adding`); | ||||||
|  |  | ||||||
|  |             await new Promise(resolve => setTimeout(resolve, delay)); | ||||||
|  |  | ||||||
|  |             try { | ||||||
|  |                 await channel.addUser(user.id); | ||||||
|  |                 lastAddTimes.set(user.id, Date.now()); | ||||||
|  |                 console.log(`[GROUPADD] Successfully re-added user ${user.id}`); | ||||||
|  |             } catch (error) { | ||||||
|  |                 console.log(`[GROUPADD] Failed to re-add user ${user.id}:`, error); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         const targetCount = targetUserIds.size; | ||||||
|  |         message.channel.send(`Now watching for ${targetCount} user${targetCount > 1 ? 's' : ''} to leave the group.`) | ||||||
|  |             .then(msg => setTimeout(() => msg.delete().catch(() => { }), deleteTimeout)); | ||||||
|  |     }, | ||||||
|  | }; | ||||||
							
								
								
									
										3
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								index.js
									
									
									
									
									
								
							| @@ -1,11 +1,8 @@ | |||||||
| require('dotenv').config(); | require('dotenv').config(); | ||||||
| const { Client } = require('discord.js-selfbot-v13'); | const { Client } = require('discord.js-selfbot-v13'); | ||||||
| const { DiscordStreamClient } = require('discord-stream-client'); |  | ||||||
| const client = new Client(); | const client = new Client(); | ||||||
| const fs = require('fs'); | const fs = require('fs'); | ||||||
|  |  | ||||||
| client.streamClient = new DiscordStreamClient(client); |  | ||||||
|  |  | ||||||
| const PREFIX = process.env.PREFIX || '.'; | const PREFIX = process.env.PREFIX || '.'; | ||||||
| const MESSAGE_DELETE_TIMEOUT = 10000 | const MESSAGE_DELETE_TIMEOUT = 10000 | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user