|
const TelegramBot = require('node-telegram-bot-api'); |
|
const express = require('express'); |
|
const axios = require('axios'); |
|
const data = require('./data'); |
|
const app = express(); |
|
const port = process.env.PORT || 3000; |
|
|
|
|
|
const bot = new TelegramBot('7330777255:AAHDypo5Jno6YH_BSmwQ90UtPDMWhNap68o', { |
|
polling: true, |
|
request: { timeout: 30000 } |
|
}); |
|
|
|
|
|
function isAdmin(userId) { |
|
return userId === data.adminId; |
|
} |
|
|
|
|
|
app.get('/', (req, res) => res.send('🤖 البوت يعمل بشكل صحيح')); |
|
app.listen(port, () => console.log(`السيرفر يعمل على البورت ${port}`)); |
|
|
|
|
|
bot.onText(/\/start/, (msg) => { |
|
const chatId = msg.chat.id; |
|
if (!data.users.has(chatId)) { |
|
data.users.add(chatId); |
|
} |
|
bot.sendMessage(chatId, data.welcomeMessage); |
|
}); |
|
|
|
|
|
bot.on('message', async (msg) => { |
|
const chatId = msg.chat.id; |
|
const userId = msg.from.id; |
|
|
|
if (msg.text && !msg.text.startsWith('/')) { |
|
try { |
|
const aiResponse = await axios.post('https://api.aimlapi.com/predict', { |
|
model: "gpt-4-turbo", |
|
messages: [{ role: "user", content: msg.text }], |
|
max_tokens: 1500, |
|
temperature: 0.7 |
|
}, { |
|
headers: { |
|
'Authorization': `Bearer ${data.aimlapiKey}`, |
|
'Content-Type': 'application/json' |
|
}, |
|
timeout: 20000 |
|
}); |
|
|
|
const answer = aiResponse.data.choices[0].message.content; |
|
bot.sendMessage(chatId, answer, { parse_mode: 'Markdown' }); |
|
|
|
} catch (error) { |
|
console.error('خطأ في API:', error.response?.data || error.message); |
|
bot.sendMessage(chatId, '⚠️ حدث خطأ أثناء معالجة سؤالك، يرجى المحاولة لاحقًا.'); |
|
} |
|
} |
|
}); |
|
|
|
|
|
bot.onText(/\/setwelcome (.+)/, (msg, match) => { |
|
const userId = msg.from.id; |
|
if (isAdmin(userId)) { |
|
data.welcomeMessage = match[1]; |
|
data.saveWelcomeMessage(); |
|
bot.sendMessage(msg.chat.id, '✅ تم تحديث رسالة الترحيب بنجاح!'); |
|
} |
|
}); |
|
|
|
bot.onText(/\/broadcast (.+)/, (msg, match) => { |
|
const userId = msg.from.id; |
|
if (isAdmin(userId)) { |
|
const message = match[1]; |
|
data.users.forEach(user => { |
|
bot.sendMessage(user, `📢 إشعار عام:\n${message}`); |
|
}); |
|
bot.sendMessage(msg.chat.id, `✔️ تم الإرسال لـ ${data.users.size} مستخدم`); |
|
} |
|
}); |
|
|
|
|
|
setInterval(() => { |
|
axios.get(`https://${process.env.PROJECT_DOMAIN}.glitch.me/`) |
|
.then(() => console.log('تم تجنب السكون ✅')) |
|
.catch(err => console.error('خطأ في الحفاظ على النشاط:', err)); |
|
}, 280000); |