Загрузка...

Бот, чтобы выписывать чеки на лолз (аля send)

Тема в разделе Node.js создана пользователем dispatcher 17 май 2025. (поднята 26 май 2025) 235 просмотров

Загрузка...
  1. dispatcher
    dispatcher Автор темы 17 май 2025 https://lolz.live/threads/8632381/ 651 4 ноя 2021
    Сап, мне пришла идея по приколу замутить бота, который позволит переводить деньги на баланс форума через инлайн-команду (
    ⁡@send 10 на шлюх
    ⁡).
    Я посидел и родил такое решение на TypeScript/grammY/axios:
    [IMG]
    Версия очень сырая и недоработанная, если у кого-то возникнет желание - можете довести до идеала.
    Чтобы использовать, нужно ввести в конфиг ваш айдишник телеграмма (или несколько :roflanZdarova: ), токен бота из BotFather (там же нужно поставить инлайн-колбек на 100%), токен с доступом к market из lzt.market/account/api, а также секретное слово. Исходники и гайд по установке:
    JS
    import { Bot } from "grammy";
    import { InputTextMessageContent } from "grammy/out/types";
    import axios from 'axios';
    import { apitoken, secretWord, tg_token, users } from '../config.json'

    const bot = new Bot(tg_token);

    const isNumeric = (value: string) => !isNaN(+value) && isFinite(+value);

    bot.on("inline_query", async (ctx) => {
    if(!users.includes(String(ctx.from.id))) return;
    const query = ctx.inlineQuery.query.trim().split(" ");
    if (query.length < 2 || !isNumeric(query[0])) return;

    const [amount, account] = query;
    let comment;
    if (query[2]) comment = query.slice(2).join(" ");

    return ctx.answerInlineQuery([
    {
    type: "article",
    id: "1",
    title: `Отправить ${amount} RUB на счет ${account}`,
    input_message_content: {
    message_text: `Обработка...`
    } as InputTextMessageContent,
    reply_markup: { inline_keyboard: [[{ text: ' Ожидайте...', callback_data: 'nothing_here' }]] },
    description: `Нажмите, чтобы отправить ${amount} RUB`
    }
    ]);
    });


    bot.on('chosen_inline_result', async (ctx) => {
    if (!ctx.update.chosen_inline_result.inline_message_id) return;
    if(!users.includes(String(ctx.from.id))) return;
    const query = ctx.update.chosen_inline_result.query.trim().split(" ");
    if (query.length < 2 || !isNumeric(query[0])) return;

    const [amount, account] = query;
    let comment;
    if (query[2]) comment = query.slice(2).join(" ")

    let url = `https://prod-api.lzt.market/balance/transfer?currency=rub&username=${account}&amount=${amount}&secret_answer=${secretWord}`;

    if (comment && comment.length > 1) {
    url += `&comment=${comment}`;
    }
    const options = {
    method: 'POST',
    url: url,
    headers: {
    accept: 'application/json',
    authorization: `Bearer ${apitoken}`
    }
    };
    try {
    let res = await axios.request(options)
    if (res.status != 200) ctx.api.editMessageTextInline(ctx.update.chosen_inline_result.inline_message_id, ` Произошла ошибка! Проверьте баланс и уточните имя получателя`);
    ctx.api.editMessageTextInline(ctx.update.chosen_inline_result.inline_message_id, ` Перевод на сумму ${amount} RUB отправлен пользователю ${account}`);
    } catch (error) {
    ctx.api.editMessageTextInline(ctx.update.chosen_inline_result.inline_message_id, ` Произошла ошибка! Проверьте баланс и уточните имя получателя`);
    }

    });

    bot.start();
    JS
    {
    "users": ["7629404322"],
    "tg_token": "",
    "apitoken": "",
    "secretWord": ""
    }
    npm install -D typescript
    npm i axios grammy
    npx tsc --init
    npx tsc
    JS
    {
    "compilerOptions": {
    "resolveJsonModule": true,
    "esModuleInterop": true,
    ...
    }
    }
     
    17 май 2025 Изменено
  2. сомния
    сомния 17 май 2025 11:11 означает смену эпох и зарождение нового мира 1573 4 апр 2022
    прикольно, но наличие нужного баланса и существование получателя можно проверять на return ctx.answerInlineQuery этапе
     
    1. Посмотреть предыдущие комментарии (2)
    2. dispatcher Автор темы
      я кста не видел в доке ручки чтоб баланс чекнуть, скинь
    3. сомния
    4. dispatcher Автор темы
      сомния, ну думаю как-нибудь сяду и допишу до идеала, там еще можно валюту указывать, можно реализовать
  3. zxcensored
    zxcensored 17 май 2025 Дедики тут https://lolz.live/threads/2901120/ 4408 30 окт 2021
    а если шлюх не трахаю?
     
    1. dispatcher Автор темы
      zxcensored, разрешаю другой комент написать
  4. same
    same 17 май 2025 у них отрицательный резус у меня прибыльный бизнес 701 30 янв 2022
    респектос
     
  5. ImJustLolzer
    ImJustLolzer 24 май 2025 Заблокирован(а) 11 28 апр 2025
    Как бля запустить, у меня пишет что в первой строке уже чет не правильно
     
    1. Посмотреть предыдущие комментарии (4)
    2. ImJustLolzer
      dispatcher, [IMG] И при первом запуске такая же ошибка
    3. nibber220
      ImJustLolzer,
      Опа, зяц, ты че, сходняк не подготовил? Без зависимостей лезешь, как лох на стрелку без ствола? Пишет не правильно — потому что ты, фраер не посмотрел инструкцию по запуску!

      Чё делать? А вот чё:

      Качаешь зависимости как нормальный пацан:


      npm install -D typescript
      npm i axios grammy
      npx tsc --init
      npx tsc
      (а если нет файла — ищи, чё там в error вылезает, и ставь вручную, как по фене)

      Проверяешь, чё там в первой строке — может, кодировку не ту вписал, либо путь кривой.

      Если опять не заводится — не гони волну, читай лог как мент читает дело, и исправляй косяки.

      Разбирайся, браток!
Top