Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Доброго времени чуваки дамы сегодня делаем telegram bot авто-оплату BANKER/CHATEX
ДЛЯ ЧЕГО НАМ ЭТОТ БОТ???
Хз, это просто урок
Давайте начнем!
Создавайте файлик под названием balance.py
Далее
Для начала пропишем модуль в cmd
Далее мы должны создать файлик session.py
Код:
Далее заходим в cmd и пишем
Далее у вас отображается вот это:
Здесь пишите свой намбер (номер)
Далее вы должны ввести код
Если все правильно то вам напишет вот это:
НО ЕСЛИ БУДУТ ОШИБКИ ИСПРАВЛЯЙТЕ САМИ У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ
Добавляем бота в [aiogram]
Добавляем в бота [pyTelegramBotAPI]
ДЛЯ ЧЕГО НАМ ЭТОТ БОТ???
Хз, это просто урок
Давайте начнем!
Создавайте файлик под названием 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()