sphinx-tools
v2.0.1
Published
Very powerful and advanced tools all made by Sphinx (3yl) for Arabs in specific, to help them manage their Discord bots with ease. Features include advanced broadcasting/multicasting, auto-reactions, leveling system, voice stay, Quran and Ahadith fetching
Maintainers
Readme
Sphinx Tools , made by Sphinx (3yl)
A powerful Discord automation package with selfbot and bot features.
Installation
npm install sphinx-toolsClasses
1. User Class (Selfbot - discord.js-selfbot-v13)
const { Client } = require('discord.js-selfbot-v13');
const { User } = require('sphinx-tools');
const client = new Client();
const user = new User(client);
client.login('YOUR_TOKEN');autoreaction()
Auto-react to giveaways and handle button interactions.
await user.autoreaction({
customBotID: ['bot-id-1', 'bot-id-2'],
timeout: 3000,
blacklistedwords: ['fake', 'test'],
ownerId: 'your-user-id'
});Options:
customBotID- Array of bot IDs to monitortimeout- Delay before reacting (ms, default: 5000)blacklistedwords- Words to ignore in embedsownerId- Your user ID for tracking
Events:
user.on('giveawayCreated', (data) => {
console.log(data.url); // Message URL
console.log(data.embed); // Embed data
console.log(data.bot); // Bot ID
});
user.on('wins', (data) => {
console.log(data.inv); // Server invite
console.log(data.data); // Win message
});leveling()
Send messages automatically for ranking up.
await user.leveling({
channel: 'channel-id',
time: 15000,
type: 'eng',
randomLetters: false
});Options:
channel- Channel ID (required)time- Interval between messages (ms, default: 15000)type- Language: 'eng' or 'ar' (default: 'eng')randomLetters- Generate random text (default: false)
Methods:
user.stopLeveling(); // Stop sending messages
user.restartLeveling(); // Restart with previous optionsVoiceStay()
Stay connected to a voice channel.
await user.VoiceStay({
guild: 'guild-id',
channel: 'voice-channel-id'
});Options:
guild- Guild ID (required)channel- Voice channel ID (required)
Features:
- Auto-reconnects if disconnected
- Checks connection every 30 seconds
2. BotBroadcaster Class (Bot - Eris)
const Eris = require('eris');
const { BotBroadcaster } = require('sphinx-tools');
const client = new Eris('BOT_TOKEN');
const broadcaster = new BotBroadcaster(client);
client.connect();broadcast()
Send DMs to guild members using one bot.
const result = await broadcaster.broadcast({
guildID: 'guild-id',
message: 'Hello everyone!',
timeout: 2000,
mention: true,
skipBots: true,
onlineOnly: false
});Options:
guildID- Guild ID (required)message- Message to send (required)timeout- Delay between DMs (ms, default: 2000)mention- Mention users in DMs (default: true)logInfo- Log each DM (default: false)speedMode- No delays (default: false)skipBots- Skip bot accounts (default: true)skipRoles- Array of role IDs to skip (default: [])maxRetries- Retry failed DMs (default: 1)onlineOnly- Only target online/dnd/idle users (default: false)
Events:
broadcaster.on('broadcastStarted', (data) => {
console.log(data.targetCount); // Total members
});
broadcaster.on('broadcastProgress', (data) => {
console.log(data.progress); // Percentage
console.log(data.sent); // Sent count
console.log(data.failed); // Failed count
});
broadcaster.on('dmSent', (data) => {
console.log(data.member); // Username
});
broadcaster.on('dmFailed', (data) => {
console.log(data.error); // Error message
});
broadcaster.on('broadcastComplete', (result) => {
console.log(result.successCount);
console.log(result.failureCount);
console.log(result.duration);
});Result:
{
guildID: 'guild-id',
guildName: 'Server Name',
successCount: 150,
failureCount: 10,
duration: 45000,
targetCount: 160,
successRate: 93,
timestamp: Date
}multiCast()
Send DMs using multiple bots.
const bot1 = new Eris('TOKEN_1');
const bot2 = new Eris('TOKEN_2');
const bot3 = new Eris('TOKEN_3');
const result = await broadcaster.multiCast({
guildID: 'guild-id',
message: 'Hello everyone!',
bots: [bot1, bot2, bot3],
timeout: 1000,
randomDistribution: true,
maxDMsPerHour: 50,
onlineOnly: false
});Options:
- Same as
broadcast()plus: bots- Array of Eris clients (required, min: 2)randomDistribution- Distribute randomly (default: true)maxDMsPerHour- Rate limit per bot (default: 40)
Events:
broadcaster.on('multicastStarted', (data) => {
console.log(data.botCount); // Number of bots
});
broadcaster.on('multicastProgress', (data) => {
console.log(data.botsUsed); // Bots count
});
broadcaster.on('multicastComplete', (result) => {
console.log(result.botsUsed);
console.log(result.averageDMsPerBot);
console.log(result.botStats); // Per-bot statistics
});Result:
{
guildID: 'guild-id',
guildName: 'Server Name',
successCount: 150,
failureCount: 10,
duration: 30000,
botsUsed: 3,
averageDMsPerBot: 50,
botStats: [
{ botID: 'id', botUsername: 'Bot1', successCount: 50, failureCount: 3 },
{ botID: 'id', botUsername: 'Bot2', successCount: 52, failureCount: 4 },
{ botID: 'id', botUsername: 'Bot3', successCount: 48, failureCount: 3 }
]
}Utility Methods
// Configure broadcaster
broadcaster.setConfig({
speedMode: false,
delayBetweenDMs: 3000,
maxDMsPerHour: 50
});
// Get current config
const config = broadcaster.getConfig();
// Get statistics
const stats = broadcaster.getStats();
console.log(stats.totalDmsSent);
console.log(stats.successRate);
// Get history
const history = broadcaster.getHistory(10); // Last 10 broadcasts
// Clear history
broadcaster.clearHistory(true); // true = clear stats too3. Islam Class
const { Islam } = require('sphinx-tools');
const islam = new Islam();Quran Methods
// Get all suras
const suras = islam.returnAllSuras();
// Play sura in voice channel
await islam.play('Al-Fatiha', voiceConnection);
await islam.play(1, voiceConnection); // By number
// Stop playback
await islam.stop(voiceConnection);Islamic Content
// Get random quiz question
const quiz = islam.quiz();
console.log(quiz.name); // Question
console.log(quiz.answers); // Array of answers with correct/wrong flag
// Get random zekr
const zekr = islam.getRandomZekr();
// Get random hadith
const hadith = islam.getRandomHadith();
// Convert to Hijri date
const hijri = islam.convertToHejri(new Date());
console.log(hijri.year); // Hijri year
console.log(hijri.month); // Hijri month number
console.log(hijri.day); // Hijri day
console.log(hijri.monthName); // Month name in EnglishExamples
Giveaway Bot
const { Client } = require('discord.js-selfbot-v13');
const { User } = require('sphinx-tools');
const client = new Client();
const user = new User(client);
client.on('ready', async () => {
await user.autoreaction({
customBotID: ['294882584201003009'],
timeout: 2000
});
user.on('giveawayCreated', (data) => {
console.log('New giveaway:', data.url);
});
user.on('wins', (data) => {
console.log('You won! Join:', data.inv);
});
});
client.login('TOKEN');Mass DM Bot
const Eris = require('eris');
const { BotBroadcaster } = require('sphinx-tools');
const client = new Eris('BOT_TOKEN');
const broadcaster = new BotBroadcaster(client);
client.on('ready', async () => {
const result = await broadcaster.broadcast({
guildID: '123456789',
message: 'Important announcement!',
timeout: 3000,
skipBots: true,
onlineOnly: true
});
console.log(`Sent to ${result.successCount} members`);
});
client.connect();Multicast DM
const Eris = require('eris');
const { BotBroadcaster } = require('sphinx-tools');
const bots = [
new Eris('TOKEN_1'),
new Eris('TOKEN_2'),
new Eris('TOKEN_3')
];
const broadcaster = new BotBroadcaster(bots[0]);
Promise.all(bots.map(bot => bot.connect())).then(async () => {
const result = await broadcaster.multiCast({
guildID: '123456789',
message: 'Hello from multiple bots!',
bots: bots,
timeout: 1000,
randomDistribution: true
});
console.log(`${result.botsUsed} bots sent ${result.successCount} DMs`);
});Notes
- User class uses discord.js-selfbot-v13 (selfbot)
- BotBroadcaster uses Eris (bot)
- Selfbots violate Discord ToS - use at your own risk
- Keep tokens secure
- Rate limits apply to broadcasting
License
GPL-3.0-only
Author
Sphinx (3yl)
- Discord: 3yl
- Server: Support Server
Support
Issues: Support Server
