Сегодня , я, выходной! Привёл для вас замечательную штуку! Я такого бота продавал за 50-100 а то и за 150 зелёных но вы можете сделать свой выбор. Весь бот состоит из трёх файлов а именно : main.py (ну куда же без него) , config.py (а это сердце бота) и merchant.py.
Опишу каждый файл и расскажу что к чему) Поехали или же понаписали )
Начнём с простого - config.py
config.py - это файл конфигурации, который содержит переменные и значения, необходимые для работы бота/скрипта. Объясню каждую переменную:
Как то не очень просто оказалось но ладно.
Пункт 2 - main.py
Данный код использует библиотеку Telebot для создания Telegram-бота, который обрабатывает команду /obmen и выполняет обмен криптовалюты.
Давайте разберем основные части кода:
ФИНАЛ - merchan.py
P.S кошельки не ворк но если хотите задонить то можете в любой момент : connectUSB по этому адресу найти меня))
В коде, который я предоставил, встречаются переменные pay, limits, discount и comission, которые, вероятно, используются в файле merchant.py для задания реквизитов, лимитов, скидок и комиссий для каждой криптовалюты.
Внизу оставлю один скрин по боту и все файлы будут под хайдам для зареганных юзеров. По получении 30+ лайков я опубликую полноценный сайт обменника крипты (не слитый) с которым этот бот вполне будет работать на ура!
Опишу каждый файл и расскажу что к чему) Поехали или же понаписали )
Начнём с простого - config.py
Python:
token = '2019466365:AAGaMxifdrogFbYJcKSHmlgO9xzJT8xtqxQ'
adminid = ['954365018']
channel = "@connectUSB"
- token = 'token': Эта переменная содержит токен вашего Telegram-бота. Токен - это уникальный идентификатор, который позволяет вашей программе взаимодействовать с Telegram Bot API. Вам нужно заменить 'token' на фактический токен вашего бота.
- adminid = ['adminid']: Эта переменная содержит список идентификаторов администраторов. Идентификатор администратора - это числовой идентификатор пользователя в Telegram. Вам нужно заменить 'admin' на фактический идентификатор вашего администратора. Если у вас есть несколько администраторов, вы можете добавить их идентификаторы в список, разделяя их запятыми. Узнать свой ID можно написав /start в этом боте @getidsbot .
- channel = "connectUSB": Эта переменная содержит имя пользователя вашего канала. Имя пользователя канала - это уникальное имя, которое вы выбираете при создании канала в Telegram. Вам нужно заменить 'connectUSB' на фактическое имя вашего канала.
Как то не очень просто оказалось но ладно.
Пункт 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 и выполняет обмен криптовалюты.
Давайте разберем основные части кода:
- import - Импортирование необходимых модулей и библиотек.
- bot = telebot.TeleBot(config.token) - Создание экземпляра бота, используя токен из файла конфигурации config.token.
- def isfloat(value): - Определение функции isfloat, которая проверяет, является ли значение числом с плавающей точкой.
- @bot.message_handler(content_types=['text']) - Декоратор, указывающий, что функция start будет обрабатывать сообщения типа text.
- start(message): - Функция, которая выполняется при получении сообщения. Если сообщение содержит команду /obmen, то выполняется код внутри условия if message.text == '/obmen':.
- order_2(message):, order_3(message):, order_4(message):, order_5(message): - Функции, которые выполняются последовательно при обработке команды /obmen и последующих шагов.
- @bot.callback_query_handler(func=lambda call: True) - Декоратор, указывающий, что функция callback_inline будет обрабатывать callback-запросы.
- callback_inline(call): - Функция, которая выполняется при получении callback-запроса. В зависимости от значения call.data, выполняются соответствующие действия.
- @bot.message_handler(content_types=['text']) - Декоратор, указывающий, что функция echo_all будет обрабатывать сообщения типа text. Эта функция используется для отправки ответа в случае неправильного ввода команды.
- while True: ... - Бесконечный цикл, который обрабатывает обновления бота с помощью bot.polling(none_stop=True). Если происходит какая-либо ошибка, она выводится, и бот продолжает работу.
ФИНАЛ - 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 для задания реквизитов, лимитов, скидок и комиссий для каждой криптовалюты.
- pay - словарь, который содержит реквизиты для получения каждой криптовалюты. Ключами словаря являются коды криптовалют (например, 'BTC', 'USDT', 'ETH'), а значениями - соответствующие реквизиты.
- limits - словарь, который содержит ограничения для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - строки с указанием минимальной и максимальной суммы обмена для данной криптовалюты.
- discount - словарь, который содержит скидки для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - проценты скидки (в виде строковых значений).
- comission - словарь, который содержит комиссии для каждой криптовалюты. Ключами словаря являются коды криптовалют, а значениями - размеры комиссий (в виде строковых значений).
Внизу оставлю один скрин по боту и все файлы будут под хайдам для зареганных юзеров. По получении 30+ лайков я опубликую полноценный сайт обменника крипты (не слитый) с которым этот бот вполне будет работать на ура!
Скрытое содержимое доступно для зарегистрированных пользователей!