// ================== НАСТРОЙКИ ==================
const BOT_TOKEN = 'PASTE_YOUR_TELEGRAM_BOT_TOKEN'
const MYSQL = {
host: '127.0.0.1',
user: 'root',
password: 'PASSWORD',
database: 'samp',
waitForConnections: true,
connectionLimit: 10
}
const SERVER_NAME = 'JUST'
// ==============================================
const { Telegraf } = require('telegraf')
const mysql = require('mysql2/promise')
const bot = new Telegraf(BOT_TOKEN)
const db = mysql.createPool(MYSQL)
// ====== СТАРТ ======
bot.start(ctx => {
ctx.reply(
'🤖 Бот выдачи админки SAMP\n\n' +
'📌 Формат:\n' +
'Nick_Level Уровень\n\n' +
'📍 Пример:\nVadim_Family 7'
)
})
// ====== ОБРАБОТКА СООБЩЕНИЙ ======
bot.on('text', async ctx => {
const input = ctx.message.text.trim()
const args = input.split(' ')
if (args.length !== 2) {
return ctx.reply('❌ Неверный формат\nПример: Vadim_Family 7')
}
const nickname = args[0]
const adminLevel = parseInt(args[1])
if (isNaN(adminLevel) || adminLevel < 1) {
return ctx.reply('❌ Уровень админки должен быть числом')
}
await ctx.reply(
`🔍 Ищу игрока ${nickname}\n` +
`на сервере ${SERVER_NAME}...`
)
try {
const [rows] = await db.query(
'SELECT id FROM accounts WHERE name = ?',
[nickname]
)
if (rows.length === 0) {
return ctx.reply('❌ Игрок не найден в базе данных')
}
const playerId = rows[0].id
await db.query(
'UPDATE accounts SET admin = ? WHERE id = ?',
[adminLevel, playerId]
)
ctx.reply(
'✅ Админка успешно выдана!\n\n' +
`👤 Игрок: ${nickname}\n` +
`🆔 ID(игрока): ${playerId}\n` +
`⭐ Уровень: ${adminLevel}`
)
} catch (error) {
console.error(error)
ctx.reply('⚠️ Ошибка подключения к базе данных')
}
})
// ====== ЗАПУСК ======
bot.launch()
console.log('🤖 Telegram SAMP Admin Bot запущен')
// Корректное завершение
process.once('SIGINT', () => bot.stop('SIGINT'))
process.once('SIGTERM', () => bot.stop('SIGTERM'))