Загрузка...

Как мне добавть оплату крипто ботом ?

Тема в разделе Python создана пользователем Lologhh 29 ноя 2024. 339 просмотров

  1. Lologhh
    Lologhh Автор темы 29 ноя 2024 хацкер 52 17 апр 2023
    Код
    import sqlite3
    import asyncio
    import logging
    from aiogram import Bot, Dispatcher, executor, types
    from aiogram.contrib.fsm_storage.memory import MemoryStorage
    from aiogram.dispatcher import FSMContext
    from aiogram.dispatcher.filters.state import State, StatesGroup
    from aiogram.utils.exceptions import ChatNotFound, BotBlocked, TelegramAPIError

    # Initialize the bot and dispatcher
    API_TOKEN = 'xxx'
    ADMIN_ID = 'xxx' # Replace with the actual admin user ID

    bot = Bot(token=API_TOKEN)
    storage = MemoryStorage()
    dp = Dispatcher(bot, storage=storage)

    # Function to create or connect to the SQLite database
    def create_db_connection():
    with sqlite3.connect('user_data.db') as conn:
    cursor = conn.cursor()
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    surname TEXT,
    referral_link TEXT,
    referrals TEXT,
    balance INTEGER,
    referrer INTEGER
    )
    ''')
    conn.commit()

    create_db_connection()

    # Function to get user data from the database
    def get_user_data(user_id):
    try:
    with sqlite3.connect('user_data.db') as conn:
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM users WHERE id=?', (user_id,))
    user = cursor.fetchone()
    return user
    except sqlite3.Error as e:
    print(f"An error occurred: {e}")
    return None

    # Function to update user data in the database
    def update_user_data(user_id, **kwargs):
    try:
    with sqlite3.connect('user_data.db') as conn:
    cursor = conn.cursor()
    for key, value in kwargs.items():
    cursor.execute(f'UPDATE users SET {key}=? WHERE id=?', (value, user_id))
    conn.commit()
    except sqlite3.Error as e:
    print(f"An error occurred: {e}")

    # Function to add a new user to the database
    def add_new_user(user_id, name, surname, referral_link, referrer_id=None):
    try:
    with sqlite3.connect('user_data.db') as conn:
    cursor = conn.cursor()
    cursor.execute('''
    INSERT INTO users (id, name, surname, referral_link, referrals, balance, referrer)
    VALUES (?, ?, ?, ?, ?, ?, ?)
    ''', (user_id, name, surname, referral_link, '', 20 if referrer_id else 0, referrer_id))
    conn.commit()
    # If the user was referred, update the referrer's balance and referrals
    if referrer_id:
    update_user_data(referrer_id, balance=get_user_data(referrer_id)[5] + 20, referrals=f"{get_user_data(referrer_id)[4]}{user_id},")
    except sqlite3.Error as e:
    print(f"An error occurred: {e}")

    # Keyboard Markups
    main_menu_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    main_menu_buttons = [
    types.KeyboardButton('Меню'),
    ]
    main_menu_markup.add(*main_menu_buttons)

    submenu_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    submenu_buttons = [
    types.KeyboardButton('Товары'),
    types.KeyboardButton('Профиль'),
    types.KeyboardButton('Чат'),
    ]
    submenu_markup.add(*submenu_buttons)

    profile_menu_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    profile_menu_buttons = [
    types.KeyboardButton('Пригласить реферала'),
    types.KeyboardButton('Посмотреть рефералов'),
    types.KeyboardButton('Посмотреть баланс'),
    types.KeyboardButton('Назад'),
    ]
    profile_menu_markup.add(*profile_menu_buttons)

    admin_menu_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    admin_menu_buttons = [
    types.KeyboardButton('Рассылка сообщения'),
    types.KeyboardButton('Назад'),
    ]
    admin_menu_markup.add(*admin_menu_buttons)

    inl_buttons = types.InlineKeyboardButton(text='*** Planet Premium | 1 мес | 1.4usdt', callback_data='***_planet_premium')
    inl_buttons2 = types.InlineKeyboardButton(text='**** паспорта(украина, россиия) | 1usdt', callback_data='skan_pasporta')
    markup_inl = types.InlineKeyboardMarkup()
    markup_inl.add(inl_buttons).add(inl_buttons2)

    class FSMAdmin(StatesGroup):
    awaiting_message = State()

    @dp.message_handler(commands=['start'])
    async def cmd_started(message: types.Message):
    if message.chat.id == ADMIN_ID:
    await cmd_started_admin(message)
    else:
    await message.answer_sticker('CAACAgIAAxkBAALncGdA7NqTLiJPh2TgmD5-ws5fX0I4AALLAAMw1J0RdYrnGXBxds82BA')
    await message.answer("Привет, я бот по продаже цифровых и не только цифровых товаров", reply_markup=main_menu_markup)

    user_id = message.chat.id
    user = get_user_data(user_id)

    if not user:
    # Insert new user data
    name = message.from_user.first_name
    surname = message.from_user.last_name if message.from_user.last_name else 'Unknown'
    referral_link = f"https://t.me/lghanet_bot?start={user_id}"
    referrer_id = None
    if " " in message.text:
    referrer_candidate = message.text.split()[1]
    if referrer_candidate and referrer_candidate.isdigit():
    referrer_id = int(referrer_candidate)
    add_new_user(user_id, name, surname, referral_link, referrer_id)
    else:
    await message.answer("Вы уже зарегистрированы.", reply_markup=main_menu_markup)

    @dp.message_handler(commands=['start'], user_id=ADMIN_ID)
    async def cmd_started_admin(message: types.Message):
    await message.answer_sticker('CAACAgIAAxkBAALncGdA7NqTLiJPh2TgmD5-ws5fX0I4AALLAAMw1J0RdYrnGXBxds82BA')
    await message.answer("Привет, админ!", reply_markup=admin_menu_markup)

    @dp.message_handler(text='Меню')
    async def show_submenu(message: types.Message):
    if message.chat.id == ADMIN_ID:
    await show_admin_menu(message)
    else:
    await message.answer("Выберите пункт меню:", reply_markup=submenu_markup)

    @dp.message_handler(text='Меню', user_id=ADMIN_ID)
    async def show_admin_menu(message: types.Message):
    await message.answer("Выберите пункт меню:", reply_markup=admin_menu_markup)

    @dp.message_handler(text='Товары')
    async def message_tovars(message: types.Message):
    await message.answer('Выберите товар:', reply_markup=markup_inl)

    @dp.message_handler(text='Профиль')
    async def show_profile_menu(message: types.Message):
    await message.answer("Выберите пункт профиля:", reply_markup=profile_menu_markup)

    @dp.message_handler(text='Пригласить реферала')
    async def invite_referral(message: types.Message):
    user_id = message.chat.id
    user = get_user_data(user_id)
    if user:
    referral_link = user[3]
    await message.answer(f"Вот ваша реферальная ссылка(если по ней переидет какой-либо человек то, вам будет положено 20 баллов на счет(0.20usdt/ 20рублей)): {referral_link}", reply_markup=profile_menu_markup)
    else:
    await message.answer("Данные профиля не найдены.", reply_markup=profile_menu_markup)

    @dp.message_handler(text='Посмотреть рефералов')
    async def view_referrals(message: types.Message):
    user_id = message.chat.id
    user = get_user_data(user_id)
    if user:
    referrals = user[4].split(',') if user[4] else []
    referrals = [ref_id for ref_id in referrals if ref_id]
    if referrals:
    referral_list = "\n".join([f"ID: {ref_id}" for ref_id in referrals])
    await message.answer(f"Ваши рефералы:\n{referral_list}", reply_markup=profile_menu_markup)
    else:
    await message.answer("У вас нет рефералов.", reply_markup=profile_menu_markup)
    else:
    await message.answer("Данные профиля не найдены.", reply_markup=profile_menu_markup)

    @dp.message_handler(text='Посмотреть баланс')
    async def view_balance(message: types.Message):
    user_id = message.chat.id
    user = get_user_data(user_id)
    if user:
    balance = user[5]
    await message.answer(f"Ваш баланс: {balance} баллов , чтобы пополнить баланс нажмите кнопку ниже", reply_markup=profile_menu_markup)
    else:
    await message.answer("Данные профиля не найдены.", reply_markup=profile_menu_markup)

    @dp.message_handler(text='Назад')
    async def back_to_submenu(message: types.Message):
    await message.answer("Выберите пункт меню:", reply_markup=submenu_markup)

    @dp.message_handler(text='Чат')
    async def chat(message: types.Message):
    await message.answer('Cсылка для вступление в чат : https://t.me/+ejIVKBtSxAg5NWRi')

    @dp.callback_query_handler(text='skan_pasporta')
    async def skan_pasporta_callback(call: types.CallbackQuery):
    await call.answer()
    user_id = call.from_user.id
    user = get_user_data(user_id)
    await call.message.answer('Товар пока не доступен')
    # if user and user[5] >= 100: # Check if balance is sufficient
    # # Generate and send the text file
    # file_content = "Here is your *** Planet Premium details:\n\n" + "Insert your *** details here"
    # with open("***_details.txt", "w") as file:
    # file.write(file_content)
    # with open("***_details.txt", "rb") as file:
    # await call.message.answer_document(types.InputFile(file, "***_details.txt"))
    # # Deduct the balance
    # update_user_data(user_id, balance=user[5] - 300)
    # await call.message.answer("*** details sent successfully.")
    # else:
    # await call.message.answer("Insufficient balance. You need at least 300 points.")

    @dp.callback_query_handler(text='***_planet_premium')
    async def ***_planet_premium_callback(call: types.CallbackQuery):
    await call.answer()
    user_id = call.from_user.id
    user = get_user_data(user_id)
    if user and user[5] >= 300: # Check if balance is sufficient
    # Generate and send the text file
    file_content = "Here is your *** Planet Premium details:\n\n" + "Insert your *** details here"
    with open("***_details.txt", "w") as file:
    file.write(file_content)
    with open("***_details.txt", "rb") as file:
    await call.message.answer_document(types.InputFile(file, "***_details.txt"))
    # Deduct the balance
    update_user_data(user_id, balance=user[5] - 100)
    await call.message.answer("*** details sent successfully.")
    else:
    await call.message.answer("Insufficient balance. You need at least 300 points.")

    @dp.message_handler(text='Рассылка сообщения', user_id=ADMIN_ID)
    async def send_message_to_all(message: types.Message):
    await message.answer("Введите сообщение для рассылки:", reply_markup=types.ReplyKeyboardRemove())
    await FSMAdmin.awaiting_message.set()

    @dp.message_handler(state=FSMAdmin.awaiting_message, user_id=ADMIN_ID)
    async def send_message_to_all_users(message: types.Message, state: FSMContext):
    try:
    with sqlite3.connect('user_data.db') as conn:
    cursor = conn.cursor()
    cursor.execute('SELECT id FROM users')
    users = cursor.fetchall()
    for user in users:
    user_id = user # Ensure you are extracting the ID correctly
    try:
    await bot.send_message(user_id, message.text)
    except ChatNotFound:
    print(f"Chat not found for ID {user_id}")
    # Optionally, remove this user from the database if the chat is not found
    cursor.execute('DELETE FROM users WHERE id=?', (user_id,))
    conn.commit()
    except BotBlocked:
    print(f"Bot blocked by user {user_id}")
    except TelegramAPIError as e:
    print(f"Error occurred while sending message to {user_id}: {e}")
    await message.answer("Сообщение отправлено всем пользователям.")
    except sqlite3.Error as e:
    await message.answer(f"Ошибка: {e}")
    finally:
    await state.reset_state()

    @dp.message_handler(text='Назад', user_id=ADMIN_ID)
    async def back_to_main_menu(message: types.Message):
    await message.answer("Выберите пункт меню:", reply_markup=admin_menu_markup)

    if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    executor.start_polling(dp, skip_updates=True)
     
  2. Lologhh
    Lologhh Автор темы 29 ноя 2024 хацкер 52 17 апр 2023
    весь интернет облазил и никто почемуто не дает ответ на мой вопрос я хочу сделать так чтобы оплата в моем боте была с помощью crypto bot все используют какието сервисы по типу криптомуса
     
    1. Lologhh Автор темы
      Lologhh, либо я тупой либо лыжи не едут
  3. sqully
    sqully 29 ноя 2024 Заблокирован(а) 160 19 мар 2021
    ищешь документацию криптобота и добавляешь, на крайняк ChatGPT
     
    1. Посмотреть предыдущие комментарии (20)
    2. Gosha_coder
      Lologhh, Если не получается, то легче заплатить человеку, он тебе напишет, там ничего сложного
    3. Солнцеестояние
      Lologhh, блять aiocryptopay используй если не можешь сам запрос написать в таком случае, да и он удобнее, типо камон нахуя работу с апи самому писать если есть либа
  4. Erna
    Erna 29 ноя 2024 :pepedj: TRX&TON&ENERGY(FROM 100₽/66.000) - lzt.lol/trx :pepedj: 108 910 10 май 2019
  5. HHHoooHHH
    HHHoooHHH 30 ноя 2024 5 12 апр 2024
    [IMG]

    Переходишь в Crypto Pay, там ты найдешь все ответы на свой вопрос. В том числе там есть чат для разработчиков
     
    1. Lologhh Автор темы
      HHHoooHHH, спасибо , я уже сделал
Top
Загрузка...