add /delete command

This commit is contained in:
thopd88 2020-07-20 11:08:18 +07:00
parent ea1ddeb87d
commit eaa7370174
2 changed files with 42 additions and 0 deletions

View File

@ -536,6 +536,28 @@ class RPC:
return trade
else:
return None
def _rpc_delete(self, trade_id: str) -> Dict[str, str]:
"""
Handler for delete <id>.
Delete the given trade
"""
def _exec_delete(trade: Trade) -> None:
Trade.session.delete(trade)
Trade.session.flush()
with self._freqtrade._sell_lock:
trade = Trade.get_trades(
trade_filter=[Trade.id == trade_id, ]
).first()
if not trade:
logger.warning('delete: Invalid argument received')
raise RPCException('invalid argument')
_exec_delete(trade)
Trade.session.flush()
self._freqtrade.wallets.update()
return {'result': f'Deleted trade {trade_id}.'}
def _rpc_performance(self) -> List[Dict[str, Any]]:
"""

View File

@ -92,6 +92,7 @@ class Telegram(RPC):
CommandHandler('stop', self._stop),
CommandHandler('forcesell', self._forcesell),
CommandHandler('forcebuy', self._forcebuy),
CommandHandler('delete', self._delete),
CommandHandler('performance', self._performance),
CommandHandler('daily', self._daily),
CommandHandler('count', self._count),
@ -496,6 +497,24 @@ class Telegram(RPC):
except RPCException as e:
self._send_msg(str(e))
@authorized_only
def _delete(self, update: Update, context: CallbackContext) -> None:
"""
Handler for /delete <id>.
Delete the given trade
:param bot: telegram bot
:param update: message update
:return: None
"""
trade_id = context.args[0] if len(context.args) > 0 else None
try:
msg = self._rpc_delete(trade_id)
self._send_msg('Delete Result: `{result}`'.format(**msg))
except RPCException as e:
self._send_msg(str(e))
@authorized_only
def _performance(self, update: Update, context: CallbackContext) -> None:
"""
@ -613,6 +632,7 @@ class Telegram(RPC):
"*/forcesell <trade_id>|all:* `Instantly sells the given trade or all trades, "
"regardless of profit`\n"
f"{forcebuy_text if self._config.get('forcebuy_enable', False) else ''}"
"*/delete <trade_id>:* `Instantly delete the given trade in the database`\n"
"*/performance:* `Show performance of each finished trade grouped by pair`\n"
"*/daily <n>:* `Shows profit or loss per day, over the last n days`\n"
"*/count:* `Show number of trades running compared to allowed number of trades`"