FSM and help
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
venv
|
.venv
|
||||||
|
src/__pycache__
|
||||||
src/test.py
|
src/test.py
|
||||||
src/credentials.py
|
src/credentials.py
|
||||||
|
|||||||
94
src/main.py
94
src/main.py
@ -7,15 +7,49 @@ from aiogram.types import Message
|
|||||||
from aiogram.client.default import DefaultBotProperties
|
from aiogram.client.default import DefaultBotProperties
|
||||||
from aiogram.enums import ParseMode
|
from aiogram.enums import ParseMode
|
||||||
|
|
||||||
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram import Router, F
|
||||||
|
from aiogram.fsm.state import State, StatesGroup
|
||||||
|
from aiogram.fsm.storage.memory import MemoryStorage
|
||||||
|
from aiogram.utils.chat_action import ChatActionSender
|
||||||
|
|
||||||
import credentials
|
import credentials
|
||||||
import options
|
import options
|
||||||
import strings
|
import strings
|
||||||
|
|
||||||
|
|
||||||
async def strategy(params):
|
# Custom types and vars
|
||||||
|
|
||||||
|
paramsLines = ['highEnd',
|
||||||
|
'lowEnd',
|
||||||
|
'highBreak',
|
||||||
|
'lowBreak',
|
||||||
|
'netLevelsAmount',
|
||||||
|
'netStep',
|
||||||
|
'takeDelta',
|
||||||
|
'stopDelta',
|
||||||
|
'orderSize'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Custom
|
||||||
|
|
||||||
|
async def parseParams(params: str):
|
||||||
|
paramsList = params.split()
|
||||||
|
paramsDict = {}
|
||||||
|
for i in range(len(paramsLines)):
|
||||||
|
paramsDict(paramsLines[i]) = paramsList[i]
|
||||||
|
return paramsDict
|
||||||
|
|
||||||
|
|
||||||
|
# Bybit
|
||||||
|
|
||||||
|
async def strategy(pair, params):
|
||||||
print(params)
|
print(params)
|
||||||
time.sleep(5)
|
await time.sleep(5)
|
||||||
print('cute')
|
print('Test succes')
|
||||||
|
result = pair + '\n' + params
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
# Telegram
|
# Telegram
|
||||||
@ -25,43 +59,71 @@ async def strategy(params):
|
|||||||
# Нижняя граница ордеров
|
# Нижняя граница ордеров
|
||||||
# Верхняя граница для брейка
|
# Верхняя граница для брейка
|
||||||
# Нижняя граница для брейка
|
# Нижняя граница для брейка
|
||||||
|
# Количество уровней сетки
|
||||||
# Шаг сетки
|
# Шаг сетки
|
||||||
# Дельта для тейка
|
# Дельта для тейка
|
||||||
# Дельта для стопа
|
# Дельта для стопа
|
||||||
# Размер позиции на каждом уровне
|
# Размер позиции на каждом уровне
|
||||||
|
|
||||||
dp = Dispatcher()
|
class Form(StatesGroup):
|
||||||
|
pair = State()
|
||||||
|
params = State()
|
||||||
|
|
||||||
|
|
||||||
|
dp = Dispatcher(storage=MemoryStorage())
|
||||||
bot = Bot(
|
bot = Bot(
|
||||||
token=credentials.bot_token,
|
token=credentials.bot_token,
|
||||||
default=DefaultBotProperties(parse_mode=ParseMode.HTML),
|
default=DefaultBotProperties(parse_mode=ParseMode.HTML),
|
||||||
)
|
)
|
||||||
|
strategy_router = Router()
|
||||||
|
|
||||||
# async def sendMessage(text):
|
|
||||||
# await bot.send_message(text, )
|
|
||||||
|
|
||||||
@dp.message(Command("start"))
|
@dp.message(Command("start"))
|
||||||
async def commandStart(message: Message) -> None:
|
async def commandStart(message: Message) -> None:
|
||||||
# chat_id = message.from_user.id
|
|
||||||
await message.answer(strings.startCommand)
|
await message.answer(strings.startCommand)
|
||||||
|
|
||||||
@dp.message(Command("stop"))
|
|
||||||
async def commandStop(message: Message) -> None:
|
|
||||||
await message.answer(strings.stopCommand + '\n' + strings.stopStrategy)
|
|
||||||
|
|
||||||
@dp.message(Command("help"))
|
@dp.message(Command("help"))
|
||||||
async def commandHelp(message: Message) -> None:
|
async def commandHelp(message: Message) -> None:
|
||||||
await message.answer(strings.helpCommand)
|
await message.answer(strings.helpCommand)
|
||||||
|
|
||||||
@dp.message()
|
|
||||||
async def getParams(message: Message) -> None:
|
@strategy_router.message(Command("strategy"))
|
||||||
params = message.text
|
async def commandStrategy(message: Message, state: FSMContext):
|
||||||
await message.answer(strings.gotParams + '\n' + strings.startStrategy)
|
print("F command strategy + capture pair")
|
||||||
await strategy(params)
|
async with ChatActionSender.typing(bot=bot, chat_id=message.chat.id):
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await message.answer(strings.strategyCommand + '\n' + strings.askPair)
|
||||||
|
await state.set_state(Form.pair)
|
||||||
|
|
||||||
|
@strategy_router.message(F.text, Form.pair)
|
||||||
|
async def capture_pair(message: Message, state: FSMContext):
|
||||||
|
print("F capture pair + capture params")
|
||||||
|
await state.update_data(pair=message.text)
|
||||||
|
async with ChatActionSender.typing(bot=bot, chat_id=message.chat.id):
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await message.answer(strings.askParams)
|
||||||
|
await state.set_state(Form.params)
|
||||||
|
|
||||||
|
@strategy_router.message(F.text, Form.params)
|
||||||
|
async def capture_params(message: Message, state: FSMContext):
|
||||||
|
print("F capture params + end")
|
||||||
|
await state.update_data(params=message.text)
|
||||||
|
|
||||||
|
data = await state.get_data()
|
||||||
|
t = await strategy(pair=data.get("pair"), params=data.get("params"))
|
||||||
|
msg_text = (f'Вы запускаете стратегию на паре <b>{data.get("pair")}</b> с данными параметрами\n<b>{data.get("params")}</b>\n')
|
||||||
|
await message.answer(msg_text)
|
||||||
|
await state.clear()
|
||||||
|
|
||||||
|
@dp.message(Command("stop"))
|
||||||
|
async def commandStop(message: Message) -> None:
|
||||||
|
await message.answer(strings.stopCommand + '\n' + strings.stopStrategy)
|
||||||
|
|
||||||
|
|
||||||
# Main
|
# Main
|
||||||
|
|
||||||
async def main() -> None:
|
async def main() -> None:
|
||||||
|
dp.include_router(strategy_router)
|
||||||
await dp.start_polling(bot)
|
await dp.start_polling(bot)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@ -5,16 +5,37 @@ startStrategy = "Стратегия запущена!"
|
|||||||
stopStrategy = "Стратегия остановлена!"
|
stopStrategy = "Стратегия остановлена!"
|
||||||
|
|
||||||
|
|
||||||
# Telegram
|
# Bot Statuses
|
||||||
|
|
||||||
startBot = "Бот запущен"
|
startBot = "Бот запущен!"
|
||||||
|
|
||||||
stopBot = "Бот остановлен"
|
stopBot = "Бот остановлен!"
|
||||||
|
|
||||||
startCommand = "Введите параметры:"
|
|
||||||
|
|
||||||
stopCommand = ""
|
# Commands
|
||||||
|
|
||||||
helpCommand = "При старте стратегии требуется задать параметры в следующем формате:\nбудет расписано в последующих версиях"
|
startCommand = "Привет! Это приватный бот для полуавтоматической торговли криптовалютой. Хороших позиций!"
|
||||||
|
|
||||||
|
stopCommand = "Стратегия остановлена!"
|
||||||
|
|
||||||
|
helpCommand = "При старте стратегии требуется задать параметры в следующем формате:\n" \
|
||||||
|
"Верхняя граница ордеров\n" \
|
||||||
|
"Нижняя граница ордеров\n" \
|
||||||
|
"Верхняя граница для брейка\n" \
|
||||||
|
"Нижняя граница для брейка\n" \
|
||||||
|
"Количество уровней сетки\n" \
|
||||||
|
"Шаг сетки\n" \
|
||||||
|
"Дельта для тейка\n" \
|
||||||
|
"Дельта для стопа\n" \
|
||||||
|
"Размер позиции на каждом уровне"
|
||||||
|
|
||||||
|
strategyCommand = "Вы собираетесь запустить стратегию."
|
||||||
|
|
||||||
|
|
||||||
|
# Route status
|
||||||
|
|
||||||
|
askPair = "Введите монетную пару:"
|
||||||
|
|
||||||
|
askParams = "Введите параметры:"
|
||||||
|
|
||||||
gotParams = "Параметры заданы!"
|
gotParams = "Параметры заданы!"
|
||||||
|
|||||||
Reference in New Issue
Block a user