Софт - ТГ БОТ ОБМЕННИК КРИПТЫ | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Софт ТГ БОТ ОБМЕННИК КРИПТЫ

connectUSB

Нейросеть
Автор темы
14 Янв 2023
55
460
53
Сегодня , я, выходной! Привёл для вас замечательную штуку! Я такого бота продавал за 50-100 а то и за 150 зелёных но вы можете сделать свой выбор. Весь бот состоит из трёх файлов а именно : main.py (ну куда же без него) , config.py (а это сердце бота) и merchant.py.

Опишу каждый файл и расскажу что к чему) Поехали или же понаписали )



Начнём с простого - config.py

Python:
token = '2019466365:AAGaMxifdrogFbYJcKSHmlgO9xzJT8xtqxQ'
adminid = ['954365018']
channel = "@connectUSB"
config.py - это файл конфигурации, который содержит переменные и значения, необходимые для работы бота/скрипта. Объясню каждую переменную:

  1. token = 'token': Эта переменная содержит токен вашего Telegram-бота. Токен - это уникальный идентификатор, который позволяет вашей программе взаимодействовать с Telegram Bot API. Вам нужно заменить 'token' на фактический токен вашего бота.
  2. adminid = ['adminid']: Эта переменная содержит список идентификаторов администраторов. Идентификатор администратора - это числовой идентификатор пользователя в Telegram. Вам нужно заменить 'admin' на фактический идентификатор вашего администратора. Если у вас есть несколько администраторов, вы можете добавить их идентификаторы в список, разделяя их запятыми. Узнать свой ID можно написав /start в этом боте @getidsbot .
  3. channel = "connectUSB": Эта переменная содержит имя пользователя вашего канала. Имя пользователя канала - это уникальное имя, которое вы выбираете при создании канала в Telegram. Вам нужно заменить 'connectUSB' на фактическое имя вашего канала.
В файле config.py вы можете хранить такие конфигурационные переменные, чтобы вам было удобно изменять их в одном месте без необходимости внесения изменений в основной код программы. Это облегчает настройку и персонализацию программы.

Как то не очень просто оказалось но ладно.

Пункт 2 - main.py


Python:
import telebot
import requests
import json
import random
import config
import merchant
import time
from telebot import types
from datetime import date, datetime

bot = telebot.TeleBot(config.token)

otdaet = ''
poluchaet = ''
summ = ''
rekvezit = ''

def isfloat(value):
    try:
        float(value)
        return True
    except ValueError:
        return False

@bot.message_handler(content_types=['text'])
def start(message):
    if message.text == '/obmen':
        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        button1 = types.KeyboardButton('BTC')
        button2 = types.KeyboardButton('USDT')
        button3 = types.KeyboardButton('ETH')
        button4 = types.KeyboardButton('NEO')
        button5 = types.KeyboardButton('DASH')
        button6 = types.KeyboardButton('DOGE')
        button7 = types.KeyboardButton('LTC')
        button8 = types.KeyboardButton('XMR')
        markup.add(button1, button2, button3, button4, button5, button6, button7, button8)
        message = bot.send_message(message.chat.id, "\n👇 Укажите валюту какую хотите обменять (отдаёте):", reply_markup=markup)
        bot.register_next_step_handler(message, order_2)
    else:
        bot.send_message(message.from_user.id, "✌️ Приветствуем Вас, "+str(message.chat.first_name)+".\nBitxchanger- это моментальный бот обмена крипто валют .\nИНФ-канал: "+str(config.channel)+" \nДля начала обмена напиши мне /obmen")

def order_2(message):
    global otdaet
    otdaet = message.text
    markup1 = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    button1 = types.KeyboardButton('BTC')
    button2 = types.KeyboardButton('USDT')
    button3 = types.KeyboardButton('ETH')
    button4 = types.KeyboardButton('NEO')
    button5 = types.KeyboardButton('DASH')
    button6 = types.KeyboardButton('DOGE')
    button7 = types.KeyboardButton('LTC')
    button8 = types.KeyboardButton('XMR')
    markup1.add(button1, button2, button3, button4, button5, button6, button7, button8)
    message = bot.send_message(message.chat.id, "👇 Теперь выберите валюту (получения):", reply_markup=markup1)
    bot.register_next_step_handler(message, order_3)
    
def order_3(message):
    global poluchaet
    poluchaet = message.text
    url = "https://min-api.cryptocompare.com/data/price?fsym="+ otdaet +"&tsyms="+ poluchaet
    prev_price = 0
    j = requests.get(url)
    data = json.loads(j.text)
    price = data[poluchaet]
    prev_price = price
    coin_limit = merchant.limits[otdaet]
    bot.send_message(message.chat.id, '📥 Обмен: ' + otdaet + ' на ' + poluchaet + '\n'
                                     '📈 Курс обмена: 1 ' + otdaet + ' = ' +  str(price) + ' ' + poluchaet + '\n'
                                     '👇 ' + coin_limit + ':\n', parse_mode="Html")
    bot.register_next_step_handler(message, order_4)

def order_4(message):
    global summ
    summ = int(message.text)
    bot.send_message(message.chat.id, '👇 Укажите реквизиты получаемой валюты:', parse_mode="Html")
    bot.register_next_step_handler(message, order_5)
    
def order_5(message):
    global rekvezit
    rekvezit = message.text
    url = "https://min-api.cryptocompare.com/data/price?fsym="+ otdaet +"&tsyms="+ poluchaet
    prev_price = 0
    j = requests.get(url)
    data = json.loads(j.text)
    price = data[poluchaet]
    prev_price = float(price)
    podshet = summ * price
    token_discount = float(merchant.discount[otdaet])
    token_comission = float(merchant.comission[otdaet])
    calculate1 = (podshet * token_discount) / 100
    calculate2 = podshet - calculate1
    calculate3 = calculate2 + token_comission
    token_coin = merchant.pay[otdaet]
    keyboard = types.InlineKeyboardMarkup()
    button1 = types.InlineKeyboardButton(text="✅ Оплатил", callback_data="accept")
    button2 = types.InlineKeyboardButton(text="❌ Отказаться", callback_data="cancel")
    keyboard.add(button1, button2)
    bot.send_message(message.chat.id, '📥 Обмен: ' + otdaet + ' на ' + poluchaet + '\n📥 Отдаете: '+ str(summ) +' ' + otdaet + ', получаете: '+ str(calculate3) +' ' + poluchaet + '\n💳 Реквизиты для получения (номер кошелька): '+ rekvezit +'\n 📈<code> Курс обмена: 1 ' + otdaet + ' = ' +  str(price) + ' ' + poluchaet + '</code>\n Переведите на этот счёт '+ str(summ) +' ' + otdaet + '\n <b>'+ token_coin +'</b> \n с коментарием ' + str(random.randrange(1, 99999)) + '\n⚠️ Вы подтверждаете создание заявки на обмен?', reply_markup=keyboard, parse_mode="Html")
    print('Developer (@msfv0) | Username - ', message.chat.username, ' ', datetime.now(), '\n', '[', message.chat.first_name, ' ', message.chat.last_name, ' ', message.chat.id, ']\n')
    bot.send_message(config.adminid, '📥 Обмен: ' + otdaet + ' на ' + poluchaet + '\n📥 Отдаете: '+ str(summ) +' ' + otdaet + ', получаете: '+ str(podshet) +' ' + poluchaet + '\n💳 Реквизиты пользователя ('+ message.chat.username +') (номер кошелька): '+ rekvezit +'\n', reply_markup=keyboard, parse_mode="Html")
        
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    message = call.message

    if call.message:
        if call.data == "accept":
            bot.send_message(message.chat.id, "✅ Вы подтвердили оплату.\n Денежные средства зачислятся в течении 5 - 15 минут, в зависимости от загружемости сайта.\n Что-бы сделать ещё один обмен введите /obmen")
        elif call.data == "cancel":
            bot.send_message(message.chat.id, "❌ Вы отменили оплату.\n Что-бы сделать ещё один обмен введите /obmen")

@bot.message_handler(content_types=['text'])
def echo_all(message):
        bot.send_message(id, str(message.chat.first_name) + " [ "+ str(message.chat.id)+" ] | Написал: " + str(message.text))
        bot.send_message(message.chat.id, "Вы что-то делаете не так, пожалуйста нажмите - /obmen")
while True:
        try:
            bot.polling(none_stop=True)
        except Exception as e:
            time.sleep(3)
            print(e)

Данный код использует библиотеку Telebot для создания Telegram-бота, который обрабатывает команду /obmen и выполняет обмен криптовалюты.

Давайте разберем основные части кода:

  1. import - Импортирование необходимых модулей и библиотек.
  2. bot = telebot.TeleBot(config.token) - Создание экземпляра бота, используя токен из файла конфигурации config.token.
  3. def isfloat(value): - Определение функции isfloat, которая проверяет, является ли значение числом с плавающей точкой.
  4. @bot.message_handler(content_types=['text']) - Декоратор, указывающий, что функция start будет обрабатывать сообщения типа text.
  5. start(message): - Функция, которая выполняется при получении сообщения. Если сообщение содержит команду /obmen, то выполняется код внутри условия if message.text == '/obmen':.
  6. order_2(message):, order_3(message):, order_4(message):, order_5(message): - Функции, которые выполняются последовательно при обработке команды /obmen и последующих шагов.
  7. @bot.callback_query_handler(func=lambda call: True) - Декоратор, указывающий, что функция callback_inline будет обрабатывать callback-запросы.
  8. callback_inline(call): - Функция, которая выполняется при получении callback-запроса. В зависимости от значения call.data, выполняются соответствующие действия.
  9. @bot.message_handler(content_types=['text']) - Декоратор, указывающий, что функция echo_all будет обрабатывать сообщения типа text. Эта функция используется для отправки ответа в случае неправильного ввода команды.
  10. while True: ... - Бесконечный цикл, который обрабатывает обновления бота с помощью bot.polling(none_stop=True). Если происходит какая-либо ошибка, она выводится, и бот продолжает работу.
Пожалуйста, обратите внимание, что для корректной работы кода необходимо иметь модули и библиотеки, указанные в начале кода (telebot, requests, json, random, config, merchant, time, types, date, datetime). Также предполагается, что в вашем проекте есть файлы config.py и merchant.py, которые содержат необходимые переменные и функции для работы бота.


ФИНАЛ - merchan.py


Python:
pay = {
    'BTC': '1FkXRm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'USDT': 'USDTFkXRm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'ETH': 'ETHXRm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'NEO': 'NEORm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'DASH': 'DASHRm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'DOGE': 'DOGEm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'LTC': 'LTCXRm2mG3afa8pnW5mAKbsYZHXe5rMf6a',
    'XMR': 'XMRm2mG3afa8pnW5mAKbsYZHXe5rMf6a'
}

limits = {
    'BTC': 'Укажите сумму (мин. 0.10 BTC, макс. 65.00 BTC)',
    'USDT': 'Укажите сумму (мин. 1.00 USDT, макс. 6500.00 USDT)',
    'ETH': 'Укажите сумму (мин. 1.00 ETH, макс. 650.00 ETH)',
    'NEO': 'Укажите сумму (мин. 1.00 NEO, макс. 65000.00 NEO)',
    'DASH': 'Укажите сумму (мин. 1.00 DASH, макс. 25000.00 DASH)',
    'DOGE': 'Укажите сумму (мин. 1.00 DOGE, макс. 15000.00 DOGE)',
    'LTC': 'Укажите сумму (мин. 1.00 LTC, макс. 5500.00 LTC)',
    'XMR': 'Укажите сумму (мин. 1.00 XMR, макс. 1500.00 XMR)'
}

discount = {
    'BTC': '1',
    'USDT': '2',
    'ETH': '1',
    'NEO': '1',
    'DASH': '1',
    'DOGE': '0.4',
    'LTC': '2',
    'XMR': '5'
}

comission = {
    'BTC': '250',
    'USDT': '100',
    'ETH': '300',
    'NEO': '500',
    'DASH': '150',
    'DOGE': '50',
    'LTC': '0',
    'XMR': '50'
}

P.S кошельки не ворк но если хотите задонить то можете в любой момент : connectUSB по этому адресу найти меня))
В коде, который я предоставил, встречаются переменные pay, limits, discount и comission, которые, вероятно, используются в файле merchant.py для задания реквизитов, лимитов, скидок и комиссий для каждой криптовалюты.

  1. pay - словарь, который содержит реквизиты для получения каждой криптовалюты. Ключами словаря являются коды криптовалют (например, 'BTC', 'USDT', 'ETH'), а значениями - соответствующие реквизиты.
  2. limits - словарь, который содержит ограничения для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - строки с указанием минимальной и максимальной суммы обмена для данной криптовалюты.
  3. discount - словарь, который содержит скидки для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - проценты скидки (в виде строковых значений).
  4. comission - словарь, который содержит комиссии для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - размеры комиссий (в виде строковых значений).
Файл merchant.py использует эти переменные для определения реквизитов, ограничений, скидок и комиссий при обработке обменов криптовалют.

Внизу оставлю один скрин по боту и все файлы будут под хайдам для зареганных юзеров. По получении 30+ лайков я опубликую полноценный сайт обменника крипты (не слитый) с которым этот бот вполне будет работать на ура!

1687381421557



Скрытое содержимое доступно для зарегистрированных пользователей!
 
Like
  • 8
Реакции: 7 users
Активность:
Пока что здесь никого нет