com.termux_117.apk
81.8 MB
Voici la dernière version de termux ☝️
PhotoRoom_Remove_Background_&_Photo_Editor_v1_6_0_Pro.apk
9.3 MB
Changer ou enlever l'arrière plan de vos photos
OpenAI lance Frontier, sa plateforme de gestion d’agents IA pour les entreprises
https://www.blogdumoderateur.com/openai-lance-frontier-plateforme-gestion-agents-ia-entreprises/
https://www.blogdumoderateur.com/openai-lance-frontier-plateforme-gestion-agents-ia-entreprises/
BDM
OpenAI lance Frontier, sa plateforme de gestion d’agents IA pour les entreprises
OpenAI lance Frontier pour les entreprises souhaitant construire, déployer et gérer des agents IA à grande échelle. L'objectif est de centraliser la gestion de ces
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from ♣𝐓𝐄𝐂𝐇 𝐇𝐈𝐍𝐔𝐆𝐄𝐑𝐀 ᵇʸ ˡⁱᵐᵘˡᵉ🌐Code&Free🟢 (♘Fᵣₑₑ🌿🥀 ᭄ᵍᵒᵈ)
CRICFy_v5.6_.apk
21.3 MB
CANAL+ Sport GRATUIT sur Android !
Comment profiter de l'application :
1. Installez et ouvrez l'application.
2. Découvrez les événements sportifs en direct ou à venir, sélectionnez et choisissez un serveur de diffusion.
3. Profitez de tous les contenus CANAL+ Sport et bien plus sur votre smartphone !
4. Ajustez la qualité vidéo en fonction de votre connexion via l'icône ⚙ pendant la lecture.
t.me/scriptbothinugera
Example of main entry points for a WhatsApp bot with pairing code
By @DevCode237 :
import makeWASocket, {
useMultiFileAuthState,
DisconnectReason,
fetchLatestBaileysVersion,
Browsers,
makeInMemoryStore
} from '@whiskeysockets/baileys';
import pino from 'pino';
import { Boom } from '@hapi/boom';
import { getMenu } from './lib/menu.mjs';
import config from './config.mjs';
import readline from 'readline';
import fs from 'fs/promises';
import path from 'path';
import { performance } from 'node:perf_hooks'; // ← pour performance.now()
const logger = pino({ level: 'silent' });
const store = makeInMemoryStore({ logger });
// Fichier persistant pour les chats
const CHATS_FILE = path.join(process.cwd(), 'chats.json');
let chatsMap = new Map();
async function loadChats() {
try {
const data = await fs.readFile(CHATS_FILE, 'utf-8');
const chatsArray = JSON.parse(data);
chatsMap = new Map(chatsArray.map(chat => [chat.id, chat]));
console.log(`Chats chargés : ${chatsMap.size}`);
} catch (err) {
if (err.code !== 'ENOENT') console.error('Erreur chargement chats.json:', err);
chatsMap = new Map();
}
}
async function saveChats() {
try {
const chatsArray = Array.from(chatsMap.values());
await fs.writeFile(CHATS_FILE, JSON.stringify(chatsArray, null, 2));
} catch (err) {
console.error('Erreur sauvegarde chats.json:', err);
}
}
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const question = text => new Promise(resolve => rl.question(text, resolve));
async function connect() {
await loadChats();
const { state, saveCreds } = await useMultiFileAuthState('./session_limule');
const { version } = await fetchLatestBaileysVersion();
const sock = makeWASocket({
version,
logger,
printQRInTerminal: false,
auth: state,
browser: Browsers.macOS('Chrome'),
syncFullHistory: false
});
store.bind(sock.ev);
// Mise à jour persistante des chats
sock.ev.on('chats.upsert', chats => {
chats.forEach(chat => chatsMap.set(chat.id, chat));
saveChats();
});
sock.ev.on('chats.update', updates => {
updates.forEach(update => {
const existing = chatsMap.get(update.id);
if (existing) Object.assign(existing, update);
});
saveChats();
});
sock.ev.on('chats.delete', ids => {
ids.forEach(id => chatsMap.delete(id));
saveChats();
});
sock.ev.on('creds.update', saveCreds);
sock.ev.on('connection.update', async update => {
const { connection, lastDisconnect } = update;
if (connection === 'close') {
const reason = new Boom(lastDisconnect?.error)?.output?.statusCode;
if (reason !== DisconnectReason.loggedOut) connect();
else console.log('Déconnexion (logged out)');
} else if (connection === 'open') {
console.log('Limule-Bot connecté ✅');
}
if (!sock.authState.creds.registered) {
const phone = await question('Entre ton numéro WhatsApp (ex: 23769xxxxxxxx) : ');
const code = await sock.requestPairingCode(phone.trim());
console.log(`Code de pairing : ${code}`);
}
});
sock.ev.on('messages.upsert', async ({ messages }) => {
const m = messages[0];
if (!m.message) return;
const from = m.key.remoteJid;
const sender = m.key.participant || from;
const isOwner = sender.replace(/\D/g, '') === config.ownerNumber;
// Extraction texte (caption incluse)
let text = m.message.conversation ||
m.message.extendedTextMessage?.text ||
m.message.imageMessage?.caption ||
m.message.videoMessage?.caption ||
'';
text = text.trim();
if (!text.startsWith(config.prefix)) return;
const args = text.slice(config.prefix.length).trim().split(/ +/);
const command = args.shift()?.toLowerCase();
if (!command) return;
const commands = {
async ping() {
const start = performance.now();
await sock.sendMessage(from, { text: '🏓 Pong !' });
const latency = (performance.now() - start).toFixed(2);
await sock.sendMessage(from, {
text: `Pong ! Latency: *${latency} ms* ${latency < 150 ? '⚡' : latency < 300 ? '🚀' : '🐢'}`
});
},
async uptime() {
const up = process.uptime();
const h = Math.floor(up / 3600).toString().padStart(2, '0');
const m = Math.floor((up % 3600) / 60).toString().padStart(2, '0');
const s = Math.floor(up % 60).toString().padStart(2, '0');
await sock.sendMessage(from, { text: `⏳ *Uptime* : ${h}h ${m}m ${s}s` });
},
async menu() {
const menuMsg = await getMenu(from, m.pushName || 'Toi');
await sock.relayMessage(from, menuMsg.message, { messageId: m.key.id });
},
help: 'menu',
async cmds() {
const cmdList = [
'🏓 !ping — Test de latence',
'⏳ !uptime — Temps d\'activité',
'📜 !menu / !help — Menu principal',
'📋 !cmds — Cette liste',
'🖼️ !sticker — Image/vidéo → sticker',
'🖼️ !toimg — Sticker → image',
'📢 !bc <texte> — Diffusion (owner only)',
'🔒 !self — Mode privé (owner only)',
'🔗 !channel — Lien de la chaîne'
].join('\n');
await sock.sendMessage(from, {
text: `┏━━━ *Commandes disponibles* ━━━┓\n\n\( {cmdList}\n\n┗━━━━━━━━━━━━━━━━━━━━━┛\n \){config.footer}`
});
},
async sticker() {
const quoted = m.message.extendedTextMessage?.contextInfo?.quotedMessage ||
m.message.imageMessage || m.message.videoMessage;
if (!quoted || (!quoted.imageMessage && !quoted.videoMessage && !quoted.stickerMessage)) {
return sock.sendMessage(from, { text: '❌ Réponds à une image, vidéo ou sticker !' });
}
try {
const buffer = await sock.downloadMediaMessage(quoted);
await sock.sendMessage(from, { sticker: buffer });
await sock.sendMessage(from, { react: { text: '✅', key: m.key } });
} catch (err) {
console.error('Sticker error:', err);
await sock.sendMessage(from, { text: '❌ Échec création sticker' });
}
},
async toimg() {
const quoted = m.message.extendedTextMessage?.contextInfo?.quotedMessage;
if (!quoted?.stickerMessage) {
return sock.sendMessage(from, { text: '❌ Réponds à un sticker !' });
}
try {
const buffer = await sock.downloadMediaMessage(quoted);
await sock.sendMessage(from, { image: buffer, caption: 'Sticker → Image' });
await sock.sendMessage(from, { react: { text: '🖼️', key: m.key } });
} catch (err) {
console.error('Toimg error:', err);
await sock.sendMessage(from, { text: '❌ Échec conversion' });
}
},
async bc() {
if (!isOwner) return sock.sendMessage(from, { text: '⛔ Owner only' });
const broadcastText = args.join(' ') || '(test broadcast)';
let success = 0, failed = 0;
for (const [jid] of chatsMap) {
if (jid === 'status@broadcast' || jid === from) continue;
try {
await sock.sendMessage(jid, {
text: `📢 Broadcast :\n\n\( {broadcastText}\n\n \){config.footer}`
});
success++;
} catch (err) {
failed++;
console.error(`Échec BC → ${jid}:`, err.message);
}
}
await sock.sendMessage(from, {
text: `📊 *Broadcast terminé*\n\n✅ Réussis : ${success}\n❌ Échecs : ${failed}\nTotal : ${success + failed}`
});
},
async self() {
if (!isOwner) return sock.sendMessage(from, { text: '⛔ Owner only' });
await sock.sendMessage(from, { text: '🔒 Mode self activé (placeholder – à développer)' });
},
async channel() {
await sock.sendMessage(from, {
text: `🌟 *Rejoins la chaîne officielle !*\n\n→ \( {config.channelLink}\n\n \){config.footer}`
});
}
};
try {
const handler = commands[command];
if (handler) {
if (typeof handler === 'string') return await commands[handler]();
await handler();
} else {
await sock.sendMessage(from, { react: { text: '❓', key: m.key } });
}
} catch (err) {
console.error(`Erreur commande ${command}:`, err);
await sock.sendMessage(from, { text: `😓 Erreur avec *${command}* — réessaie plus tard` });
}
});
setInterval(saveChats, 10 * 60 * 1000); // Sauvegarde toutes les 10 min
}
connect().catch(err => {
console.error('Erreur fatale:', err);
process.exit(1);
});This media is not supported in your browser
VIEW IN TELEGRAM
OpenAI dévoile GPT-5.3-Codex, son modèle agentique le plus rapide
https://www.blogdumoderateur.com/openai-devoile-gpt-5-3-codex/
https://www.blogdumoderateur.com/openai-devoile-gpt-5-3-codex/
BDM
OpenAI dévoile GPT-5.3-Codex, son modèle agentique le plus rapide
OpenAI vient de lancer GPT-5.3-Codex, présenté comme son modèle agentique le plus avancé à ce jour, plus rapide de 25 %.
Forwarded from ▇ █ ɴᴇxᴜs🌐ʟᴀʙs █ ▇ (—͟͞͞𝐒𝐤𝐲𝐥𝐞𝐫🥀꧁🌀𓆩Limule𓆪🌀꧂ 𝐇𝐨𝐬𝐡𝐢𝐧𝐨)
This media is not supported in your browser
VIEW IN TELEGRAM