Статья АВТО ОПЛАТА BANKER {telegram}

TimurkaBeats

Команда Форума
Модератор
Сообщения
128
Реакции
63
Доброго времени чуваки дамы сегодня делаем telegram bot авто-оплату BANKER/CHATEX



ДЛЯ ЧЕГО НАМ ЭТОТ БОТ???

Хз, это просто урок


Давайте начнем!

Создавайте файлик под названием balance.py

Python:
import asyncio
import requests
import re
import sqlite3
import time

from telethon import TelegramClient, events


with sqlite3.Connection("AutoDeposit.db") as conn:
    cursor = conn.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS active_deposits (bot TEXT, gift TEXT, user_id INT, btc DECIMAL(1, 12), rub FLOAT, date INT)")
    conn.commit()


def activate_gift(bot, user_id, gift):
    asyncio.set_event_loop(asyncio.new_event_loop())

    api_id = "000"
    api_hash = "000"

    client = TelegramClient(session="TGSession", api_id=api_id, api_hash=api_hash, app_version="version 0.0.1", device_model="Phone", system_version="Android X")

    with client:
        client.loop.create_task(client.send_message(bot, f"/start {gift}"))

        @client.on(events.NewMessage())
        async def handler(event):
            message_text = event.message.message
            chat_id = event.message.peer_id.user_id
            current_time = int(time.time())
   
            if chat_id == 159405177: # Banker
                if "Вы получили" in message_text:
                    validate_deposit_data(message_text, "banker", gift, user_id, current_time)
                    await client.disconnect()

                elif "Упс, кажется, данный чек успел *****ичить кто-то другой" in message_text:
                    validate_deposit_data(message_text, "banker", gift, user_id, current_time)
                    await client.disconnect()
       
            elif chat_id == 694872633: # Chatex
                if "Ваучер на сумму" in message_text:
                    validate_deposit_data(message_text, "chatex", gift, user_id, current_time)
                    await client.disconnect()
       
                elif "Ваучер уже активирован!" in message_text:  
                    validate_deposit_data(message_text, "chatex", gift, user_id, current_time)
                    await client.disconnect()

        client.run_until_disconnected()


def validate_deposit_data(message_text, bot, gift, user_id, current_time):
    btc_data = re.findall("\d+.\d+ BTC", message_text)

    if btc_data:
        btc_amount = float(btc_data[0][:-4])
        rub_amount = btc_amount * get_curs_BTC_RUB()
    else:
        btc_amount, rub_amount = 0, 0

    add_active_deposit(bot, gift, user_id, btc_amount, rub_amount, current_time)


def add_active_deposit(bot, gift, user_id, btc, rub, current_time):
    with sqlite3.Connection("AutoDeposit.db") as conn:
        cursor = conn.cursor()
        sql = "INSERT INTO active_deposits VALUES (?, ?, ?, ?, ?, ?)"
        cursor.execute(sql, (bot, gift, user_id, btc, round(rub, 2), current_time))

        conn.commit()


# Публичное API от https://apirone.com/
def get_curs_BTC_RUB():
    return float(requests.get("https://apirone.com/api/v2/ticker?currency=btc").json()["rub"])


# Публичное API от https://blockchain.info/
def get_curs_BTC_RUB2():
    return float(requests.get("https://blockchain.info/ticker").json()["rub"]["last"])

Далее

Для начала пропишем модуль в cmd
Python:
pip install Telethon

Далее мы должны создать файлик session.py

Код:

Python:
from telethon import TelegramClient

api_id = "000" # Впишите свой api_id
api_hash = "000" # Впишите свой api_hash

client = TelegramClient(session="TGSession", api_id=api_id, api_hash=api_hash, app_version="version 0.0.1", device_model="Phone", system_version="Android X")
client.start()



Далее заходим в cmd и пишем
Python:
python Session.py

Далее у вас отображается вот это:

Здесь пишите свой намбер (номер)

Далее вы должны ввести код


Если все правильно то вам напишет вот это:


НО ЕСЛИ БУДУТ ОШИБКИ ИСПРАВЛЯЙТЕ САМИ У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ

Добавляем бота в [aiogram]

Python:
import sqlite3
import asyncio
import threading

from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.types import ReplyKeyboardMarkup, reply_keyboard
from aiogram import executor, types

# Импортируем функцию активации чеков
from AutoDeposit import activate_gift



with sqlite3.Connection("aiogram.db") as conn:
    cursor = conn.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS users (user_id INT, balance FLOAT)")
    conn.commit()


bot = Bot("ТОКЕН ОТ BOT FATHER", parse_mode='html')
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    new_user(message.chat.id)
    await message.answer(f"Привет! Твой баланс: {get_balance(message.chat.id)}", reply_markup=start_keyboard())


@dp.message_handler()
async def send_message(message: types.Message):
    chat_id = message.chat.id
    msg = message.text


    if msg == "Пополнить":
        await message.answer("Кинь сюда чек")

    elif msg == "Профиль":
        await message.answer(f"Привет! Твой баланс: {get_balance(chat_id)}")

    # Если это чек, то активируем его
    elif "BTC_CHANGE_BOT?start=" in msg:
        # Создаем и запускаем новый поток с активацией чека
        threading.Thread(target=activate_gift, args=("BTC_CHANGE_BOT", chat_id, msg.split("start=")[1])).start()

    elif "Chatex_bot?start=" in msg:
        threading.Thread(target=activate_gift, args=("Chatex_bot", chat_id, msg.split("start=")[1])).start()

def new_user(user_id):
    with sqlite3.Connection("aiogram.db") as conn:
        cursor = conn.cursor()

        cursor.execute("SELECT * FROM users WHERE user_id = ?", (user_id, ))
        user = cursor.fetchone()

        if user is None:
            cursor.execute("INSERT INTO users VALUES (?, ?)", (user_id, 0))
            conn.commit()


def get_balance(user_id):
    with sqlite3.Connection("aiogram.db") as conn:
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM users WHERE user_id = ?", (user_id, ))
        user = cursor.fetchone()

        return user[1]


def start_keyboard():
    keyboard = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    keyboard.add("Профиль", "Пополнить")
 
    return keyboard

async def deposit_checker():
    # Функция обновления баланса
    def update_balance(user_id, deposit_sum):
        # Поменять aiogram.db на свою бд
        with sqlite3.Connection("aiogram.db") as conn:
            cursor = conn.cursor()
            # Поменять таблицу users, столбец balance и столбец user_id на свои
            sql = "UPDATE users SET balance = balance + ? WHERE user_id = ?"

            cursor.execute(sql, (deposit_sum, user_id))
            conn.commit()

    with sqlite3.Connection("AutoDeposit.db") as conn:
        cursor = conn.cursor()

        while True:
            cursor.execute("SELECT * FROM active_deposits")
            deposits = cursor.fetchall()

            for deposit in deposits:
                update_balance(deposit[2], deposit[4])
                print(deposit[2])
                try:
                    await bot.send_message(chat_id=deposit[2], text=f" Баланс пополнен на {deposit[4]} рублей")
                except:
                    pass

                sql = "DELETE FROM active_deposits WHERE gift = ?"
                cursor.execute(sql, (deposit[1], ))
                conn.commit()

            await asyncio.sleep(3)

if __name__ == '__main__':
    # Запустим проверку пополнений
    loop = asyncio.get_event_loop()
    loop.create_task(deposit_checker())

    executor.start_polling(dp, skip_updates=True)

Добавляем в бота [pyTelegramBotAPI]

Python:
def deposit_checker():
    # Функция обновления баланса
    def update_balance(user_id, deposit_sum):
        # Поменять pyTelegramBotAPI.db на свою бд
        with sqlite3.Connection("pyTelegramBotAPI.db") as conn:
            cursor = conn.cursor()
            # Поменять таблицу users, столбец balance и столбец user_id на свои
            sql = "UPDATE users SET balance = balance + ? WHERE user_id = ?"

            cursor.execute(sql, (deposit_sum, user_id))
            conn.commit()

    with sqlite3.Connection("AutoDeposit.db") as conn:
        cursor = conn.cursor()

        while True:
            cursor.execute("SELECT * FROM active_deposits")
            deposits = cursor.fetchall()

            for deposit in deposits:
                update_balance(deposit[2], deposit[4])
                print(deposit[2])
                try:
                    bot.send_message(chat_id=deposit[2], text=f" Баланс пополнен на {deposit[4]} рублей")
                except:
                    pass

                sql = "DELETE FROM active_deposits WHERE gift = ?"
                cursor.execute(sql, (deposit[1], ))
                conn.commit()

            time.sleep(3)

if __name__ == '__main__':
    # Запустим проверку пополнений
    threading.Thread(target=deposit_checker).start()

    bot.infinity_polling()
 

AvisX

Исследователь
Сообщения
33
Реакции
2
from AutoDeposit import activate_gift
ModuleNotFoundError: No module named AutoDeposit
 
Верх Низ