Бот позволяет оперативно отслеживать достижение определенного ценового диапазона в заданном перечне пар. Сообщение о срабатывании события приходит пользователю в telegram.
Заказано: ООО «Открытый институт». Используется в качестве учебного пособия для обучающихся экономического факультета.
Исходный код .py
Python
from pybit.unified_trading import HTTP
import time
import telebot
import time
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
import json
import requests
import json
import time
bot = telebot.TeleBot('API_TOKEN', threaded=False)
@bot.message_handler(commands=['start'])
def start_command(message):
keyboard = InlineKeyboardMarkup()
b1 = InlineKeyboardButton(text='Получить список отслеживаемых пар', callback_data='show')
keyboard.add(b1)
#msg11=bot.send_message(message.chat.id, 'Добавьте пару в формате:\n\nПара\nНиз диапазона-Верх диапазона')
msg11=bot.send_message(message.chat.id, 'Получить список отслеживаемых пар',reply_markup=[keyboard])
#bot.register_next_step_handler(msg11, telephone)
def telephone(message):
try:
add_para(message)
#bot.send_message(message.chat.id,'Пара добавлена.')
keyboard = InlineKeyboardMarkup()
b1 = InlineKeyboardButton(text='Получить список отслеживаемых пар', callback_data='show')
b2 = InlineKeyboardButton(text='Добавить пару', callback_data='add')
b3 = InlineKeyboardButton(text='Удалить пару', callback_data='delete')
keyboard.add(b1)
keyboard.add(b2)
keyboard.add(b3)
bot.send_message(message.chat.id, 'Пара добавлена.',reply_markup=[keyboard])
except:
bot.send_message(message.chat.id,'Ошибка! Ввести новые данные')
start_command(message)
def telephone_1(message):
try:
del_para(message)
#bot.send_message(message.chat.id,'Пара добавлена.')
keyboard = InlineKeyboardMarkup()
b1 = InlineKeyboardButton(text='Получить список отслеживаемых пар', callback_data='show')
b2 = InlineKeyboardButton(text='Добавить пару', callback_data='add')
b3 = InlineKeyboardButton(text='Удалить пару', callback_data='delete')
keyboard.add(b1)
keyboard.add(b2)
keyboard.add(b3)
bot.send_message(message.chat.id, 'Пара удалена.',reply_markup=[keyboard])
except:
bot.send_message(message.chat.id,'Ошибка! Ввести новые данные')
start_command(message)
def add_para(message):
spis=[]
file=open('coins.txt', encoding='utf-8')
for i in file:
spis.append(i.strip())
file.close()
para=message.text.strip().split('\n')
para=[i.strip().upper() for i in para]
diappp=para[1].split('-')
if(para[0].strip() not in spis):
a=1/0
else:
file=open('data.txt','a', encoding='utf-8')
file.write(str(message.chat.id)+';'+para[0].strip()+';'+para[1]+';'+'+'+'\n')
file.close()
def del_para(message):
spis=[]
file=open('coins.txt', encoding='utf-8')
for i in file:
spis.append(i.strip())
file.close()
para=message.text.strip().split('\n')
para=[i.strip().upper() for i in para]
#diappp=para[1].split('-')
if(para[0].strip() not in spis):
a=1/0
else:
file=open('data.txt','a', encoding='utf-8')
file.write(str(message.chat.id)+';'+para[0].strip()+';'+''+';'+'-'+'\n')
file.close()
@bot.callback_query_handler(func=lambda call: True)
def step2(call):
global zapom
try:
if call.data == 'show':
slova={}
file=open('data.txt', encoding='utf-8')
for i in file:
pipp=i.strip().split(';')
if(pipp[3]=='+'):
if(pipp[0] not in slova):
slova[pipp[0]]={}
slova[pipp[0]][pipp[1]]=pipp[2]
else:
try:
uuu=slova[pipp[0]].pop(pipp[1])
except:
pass
soob=''
sche=0
try:
for i in slova[str(call.message.chat.id)]:
sche=sche+1
soob=soob+str(sche)+'. '+i+' '+slova[str(call.message.chat.id)][i]+'\n'
except:
pass
if(soob==''):
soob='Пар не найдено'
keyboard = InlineKeyboardMarkup()
b1 = InlineKeyboardButton(text='Добавить пару', callback_data='add')
b2 = InlineKeyboardButton(text='Удалить пару', callback_data='delete')
keyboard.add(b1)
keyboard.add(b2)
bot.send_message(call.message.chat.id, soob,reply_markup=[keyboard])
#start_command(call.message)
if call.data == 'add':
msg11=bot.send_message(call.message.chat.id, 'Добавьте пару в формате:\n\nПара\nНиз диапазона-Верх диапазона')
bot.register_next_step_handler(msg11, telephone)
if call.data == 'delete':
msg11=bot.send_message(call.message.chat.id, 'Введите название пары')
bot.register_next_step_handler(msg11, telephone_1)
'''
if call.data == 'da':
next_step(call.message,sborik)
if call.data == 'net':
start_command(call.message)
'''
except:
bot.send_message(call.message.chat.id,'Ошибка! Ввести новые данные')
start_command(call.message)
while(True):
try:
bot.polling()
except:
print('Error!!!!')
Python