const {
    Telegraf
} = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
const {
    UserModel,
    WorldModel
} = global.config

module.exports = async (ctx) => {
    ctx.args = ctx.update.message.text.split(' ')
    if (!ctx.args[1] || !ctx.args[2]) return ctx.reply(`/pay [Никнейм] [Сумма]`)
    if (!Number(ctx.args[2])) return ctx.reply(`❕ Сумма должна быть числовая.`)
    let sender = await UserModel.findByPk(ctx.from.id);
    let receiver = await UserModel.findOne({
        where: {
            username: ctx.args[1]
        }
    });
    let world = await WorldModel.findByPk(1)
    let fee = Number(Math.trunc(ctx.args[2] / 100 * world.transactionfee))
    if (ctx.args[2] == 0 || ctx.args[2] < 100) return ctx.reply(`❕ Минимальная сумма перевода ₽100.`)
    if (sender.money < ctx.args[2]) return ctx.reply(`❕ Недостаточно средств!`)
    if (sender.money < Number(ctx.args[2]) + fee) return ctx.reply(`❕ Недостаточно средств для перевода с комиссией!`)
    sender.money -= Number(ctx.args[2])
    sender.money -= Number(fee)
    world.balance += Number(fee)
    await sender.save();
    await world.save();
    receiver.money += Number(ctx.args[2])
    await receiver.save();
    let pmToReceiver = `🔽 Входящий перевод.\n\n🔼 Отправитель: ${sender.username}\n🆔 Отправителя: ${sender.telegram_id}\n🔢 Сумма: ₽${ctx.args[2]}\n🆕 Ваш баланс: ₽${receiver.money}`
    bot.telegram.sendMessage(receiver.telegram_id, pmToReceiver)
    return ctx.reply(`🔼 Исходящий перевод.\n\n🔽 Получатель: ${receiver.username}\n🆔 Получателя: ${receiver.telegram_id}\n🔢 Сумма: ₽${ctx.args[2]}\nℹ️ Комиссия: ₽${fee}\n🆕 Ваш баланс: ₽${sender.money}`)
}