Загрузка...

Фарм поинтов Blum с помощью API через телеграмм бота

Тема в разделе Криптовалюты создана пользователем molant 31 июл 2024. 1414 просмотров

Загрузка...
  1. molant
    molant Автор темы 31 июл 2024 3 30 мар 2020
    ВСЕМ ПРИВЕТ :hi:
    Наткнулся на статью (https://lolz.live/threads/7193095 ) и доделал его в виде телеграмм бота
    Приступим к установке! :falling:
    1. Заходим на официальный сайт Python и скачиваем последнюю версию ПО
    [IMG]
    2. При установке обязательно!!! поставьте галочку "Add Python to PATH"
    [IMG]
    1. Ищем в телеграмме BotFather и после пишем /newbot . Даём имя боту и получаем токен
    [IMG]
    1. Создайте скрипт с названием main.py и вставьте туда следующий скрипт

    Python
    import random
    import time
    import logging
    import requests
    import telebot
    from telebot import types

    # Telegram bot token
    TOKEN = "TOKEN_BOT"

    # Enable logging
    logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
    )
    logger = logging.getLogger(__name__)

    # API URLs
    URL_ME = "https://gateway.blum.codes/v1/user/me"
    URL_BALANCE = "https://game-domain.blum.codes/api/v1/user/balance"
    URL_PLAY_GAME = "https://game-domain.blum.codes/api/v1/game/play"
    URL_CLAIM_REWARD = "https://game-domain.blum.codes/api/v1/game/claim"

    # Constants
    MIN_POINTS = 152
    MAX_POINTS = 184

    MIN_SLEEP_TIME = 28
    MAX_SLEEP_TIME = 35

    # Initialize bot with your token
    bot = telebot.TeleBot(TOKEN)

    class InvalidToken(Exception):
    pass

    class BlumAPI:
    def __init__(self, authorization_token) -> None:
    self.headers = {
    'Authorization': authorization_token
    }

    def request(self, request_method, url, payload=None):
    response = getattr(requests, request_method)(url, headers=self.headers, data=payload)
    if response.status_code == 401:
    raise InvalidToken(response.text)
    return response

    def get_me(self):
    response = self.request('get', URL_ME)
    if not response.ok:
    raise Exception(f'Проблема при получении имени пользователя!\nТекст ошибки с сервера: {response.text}')
    return response.json()

    def get_balance(self):
    response = self.request('get', URL_BALANCE)
    if not response.ok:
    raise Exception(f'Проблема при получении баланса!\nТекст ошибки с сервера: {response.text}')
    return response.json()

    def play_game(self):
    response = self.request('post', URL_PLAY_GAME)
    if not response.ok:
    raise Exception(f'При попытке сыграть в игру произошла ошибка!\nТекст ошибки с сервера: {response.text}')
    return response.json()

    def claim_reward(self, game_id: str, points: int):
    payload = {'gameId': game_id, 'points': points}
    response = self.request('post', URL_CLAIM_REWARD, payload=payload)
    if not response.ok:
    raise Exception(f'При попытке собрать награду произошла ошибка!\nТекст ошибки с сервера: {response.text}')

    # User data storage
    user_data = {}

    @bot.message_handler(commands=['start'])
    def start(message):
    user_data[message.chat.id] = {}
    bot.send_message(message.chat.id, 'Введите токен авторизации Blum:')
    bot.register_next_step_handler(message, get_auth)

    def get_auth(message):
    user_data[message.chat.id]['token'] = message.text
    try:
    blum_api = BlumAPI(user_data[message.chat.id]['token'])
    username = blum_api.get_me().get('username')
    user_data[message.chat.id]['blum_api'] = blum_api
    user_data[message.chat.id]['username'] = username
    main_menu(message)
    except InvalidToken as e:
    bot.send_message(message.chat.id, f'Ошибка с токеном: {e}')
    bot.register_next_step_handler(message, get_auth)
    except Exception as e:
    bot.send_message(message.chat.id, f'Ошибка: {e}')
    bot.register_next_step_handler(message, get_auth)

    def main_menu(message):
    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    markup.add(types.KeyboardButton('Играть'))
    markup.add(types.KeyboardButton('Изменить настройки'))
    bot.send_message(message.chat.id, f'Привет, {user_data[message.chat.id]["username"]}! Что вы хотите сделать?', reply_markup=markup)
    bot.register_next_step_handler(message, handle_main_menu)

    def handle_main_menu(message):
    if message.text == 'Играть':
    play_game(message)
    elif message.text == 'Изменить настройки':
    settings_menu(message)
    else:
    bot.send_message(message.chat.id, 'Пожалуйста, выберите "Играть" или "Изменить настройки".')
    bot.register_next_step_handler(message, handle_main_menu)

    def settings_menu(message):
    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    markup.add(types.KeyboardButton('Количество поинтов'))
    markup.add(types.KeyboardButton('Время ожидания'))
    markup.add(types.KeyboardButton('Назад в меню'))
    bot.send_message(message.chat.id, 'Что вы хотите изменить?', reply_markup=markup)
    bot.register_next_step_handler(message, handle_settings_menu)

    def handle_settings_menu(message):
    if message.text == 'Количество поинтов':
    bot.send_message(message.chat.id, 'Введите минимальное и максимальное количество поинтов через пробел:')
    bot.register_next_step_handler(message, set_points_value)
    elif message.text == 'Время ожидания':
    bot.send_message(message.chat.id, 'Введите минимальное и максимальное время ожидания в секундах через пробел:')
    bot.register_next_step_handler(message, set_time_value)
    elif message.text == 'Назад в меню':
    main_menu(message)
    else:
    bot.send_message(message.chat.id, 'Пожалуйста, выберите "Количество поинтов" или "Время ожидания".')
    bot.register_next_step_handler(message, handle_settings_menu)

    def set_points_value(message):
    try:
    min_points, max_points = map(int, message.text.split())
    user_data[message.chat.id]['MIN_POINTS'] = min_points
    user_data[message.chat.id]['MAX_POINTS'] = max_points
    bot.send_message(message.chat.id, f'Минимальное и максимальное количество поинтов установлены на {min_points} и {max_points} соответственно.')
    except Exception as e:
    bot.send_message(message.chat.id, f'Ошибка: {e}')
    main_menu(message)

    def set_time_value(message):
    try:
    min_time, max_time = map(int, message.text.split())
    user_data[message.chat.id]['MIN_SLEEP_TIME'] = min_time
    user_data[message.chat.id]['MAX_SLEEP_TIME'] = max_time
    bot.send_message(message.chat.id, f'Минимальное и максимальное время ожидания установлены на {min_time} и {max_time} секунд соответственно.')
    except Exception as e:
    bot.send_message(message.chat.id, f'Ошибка: {e}')
    main_menu(message)

    def play_game(message):
    chat_id = message.chat.id
    blum_api = user_data[chat_id]['blum_api']
    username = user_data[chat_id]['username']
    bot.send_message(chat_id, f'Игры для {username} начинаются...')

    try:
    balance_data = blum_api.get_balance()
    available_balance, game_passes = float(balance_data.get('availableBalance')), balance_data.get('playPasses')
    bot.send_message(chat_id, f'Баланс: {available_balance}\nДоступные игры: {game_passes}')

    bot.send_message(chat_id, 'Введите количество игр, которые вы хотите сыграть:')
    bot.register_next_step_handler(message, process_games_count, available_balance, game_passes)
    except Exception as e:
    bot.send_message(chat_id, f'Ошибка: {e}')

    def process_games_count(message, available_balance, game_passes):
    chat_id = message.chat.id
    try:
    games_count = int(message.text)
    if 0 < games_count <= game_passes:
    for game_number in range(1, games_count + 1):
    bot.send_message(chat_id, f'Игра номер {game_number} начата.')
    response = user_data[chat_id]['blum_api'].play_game()
    game_id = response.get('gameId')

    min_points = user_data[chat_id].get('MIN_POINTS', MIN_POINTS)
    max_points = user_data[chat_id].get('MAX_POINTS', MAX_POINTS)
    points = random.randrange(min_points, max_points)

    min_sleep_time = user_data[chat_id].get('MIN_SLEEP_TIME', MIN_SLEEP_TIME)
    max_sleep_time = user_data[chat_id].get('MAX_SLEEP_TIME', MAX_SLEEP_TIME)
    sleep_time = random.randrange(min_sleep_time, max_sleep_time)

    time.sleep(sleep_time)
    user_data[chat_id]['blum_api'].claim_reward(game_id, points)
    available_balance += points

    bot.send_message(chat_id, f'Игра номер {game_number} завершена.\nID игры: {game_id}\nВы получили {points} поинтов.\nБаланс: {available_balance}')
    time.sleep(1)

    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    markup.add(types.KeyboardButton('Начать заново'))
    bot.send_message(chat_id, 'Все игры завершены.', reply_markup=markup)
    bot.register_next_step_handler(message, handle_restart)
    else:
    bot.send_message(chat_id, 'Введите допустимое количество игр.')
    bot.register_next_step_handler(message, process_games_count, available_balance, game_passes)
    except Exception as e:
    bot.send_message(chat_id, f'Ошибка: {e}')
    bot.register_next_step_handler(message, process_games_count, available_balance, game_passes)

    def handle_restart(message):
    if message.text == 'Начать заново':
    main_menu(message)
    else:
    bot.send_message(message.chat.id, 'Пожалуйста, выберите "Начать заново".')
    bot.register_next_step_handler(message, handle_restart)

    bot.polling(none_stop=True)
    2. После надо установить модули для правильной работы бота, заходим в cmd и прописывайте следующую команду
    Код
    pip install requests pyTelegramBotAPI
    3. В той же консоли пропишите команду для запуска скрипта (не забудьте перейти в директорию со скриптом)
    Код
    py main.py
    1. Заходим в настройки в телеграмме, и нажимаем на продвинутые настройки
    [IMG]
    2. Листаем в самый низ и заходим в "Экспериментальные настройки" и ищем там "Enable wevbiew inspecting" и включаем его
    [IMG]
    3. Заходим в blum и ПКМ на пустую область,и выбираем проверить
    [IMG]
    4. Выбираем данный значок
    [IMG]
    5. В списке появиться много запросов, нам нужен любой XHR запрос
    [IMG]
    6. После нажатия на такой запрос справа появиться колонка с заголовками, листайте пока не найдете заголовок Authorization
    [IMG]
    7.токен будет в таком формате, скопируйте его полностью (с Bearer)
    [IMG]
    1. Переходим в бота которого создали и нажимаем /start и вставляем токен который скопировали
    [IMG]
    2. Нажимаем кнопку "Играть" и выбираем сколько игр хотим сыграть.
    На этом всё! :smine_nice:

    Если все правильно сделали, то всё должно работать

    Сидим зарабатываем баллы и наслаждаемся жизнью

    Если будут вопросы, пишите буду отвечать на них :cool_bun:


    Спасибо за прочтение
    :smile_good:
     
    31 июл 2024 Изменено
  2. Божество
    Божество 31 июл 2024 готовьте трон для короля:smile_beach:
    а пизды не дадут ?
     
  3. АртёмДзюба
    АртёмДзюба 31 июл 2024 Заблокирован(а) 2101 25 ноя 2020
    блять кто то в этот скам верит, ну серьзено :smile_laugh:
     
    1. Посмотреть предыдущие комментарии (3)
    2. sh4te
      АртёмДзюба, а может как с ноткоином, вырастет в пару раз
    3. Finance
    4. Sxemazarabotk4
      АртёмДзюба, приветствую тебя лошара)) блум ебашит) листинг уже скоро)) а ты хуй соси со своим скамом окей:())
  4. Весть
    Весть 31 июл 2024 На поездку в Москву - 6669\25 ООО 8693 8 авг 2019
    Листинга не будет, Хомиак сдох :sadhamster:
     
    1. Посмотреть предыдущие комментарии (2)
  5. Jargonium
    Jargonium 31 июл 2024 КНОПКА БАБЛО$ - https://lolz.live/threads/8464084/ 8895 25 ноя 2020
    А потом бот выведет все ваши блумпоинты на листинге √
     
    1. ЦарьОффтопа
      Jargonium, так этот токен меняется каждые сутки
  6. eliteptu
    eliteptu 8 авг 2024 0 9 июн 2020
    По какой причине делает 1-3 игры и потом выдает ошибку?
    Ошибка: При попытке собрать награду произошла ошибка!
    Текст ошибки с сервера: {"message":"game session not finished"}
     
    1. molant Автор темы
      eliteptu, а ты всё правильно сделал?
  7. beginner13
    beginner13 16 авг 2024 12 24 апр 2017
    Почему-то ошибку выдает
    [IMG]
     
    16 авг 2024 Изменено
  8. ГорныйБаран
    не робит
     
  9. farg32
    farg32 28 сен 2024 2 14 дек 2020
    Ошибка: Проблема при получении имени пользователя!
    Текст ошибки с сервера: {"code":5, "message":"Not Found", "details":[]}
     
  10. san4iz_ua
    san4iz_ua 23 окт 2024 0 20 фев 2023
    кароч пишет что все ок, но поинти не зачисляет
     
Top