Notifications
The messages the bot sends you without being asked, and what each one means.
Most of what the bot shows you is a panel - something you opened, with buttons on it and a way back out. A notification is the other kind of message: the bot messages you, unprompted, because something happened to your money.
Notifications have no buttons and no Close. They are not screens you navigate; they
are a record that stays in the chat. None of the trading messages below carries the
📖 How this panel works link that every panel ends with, because there is no panel to
explain - which is why this page exists, as the only place they are written down.
Three unprompted messages do carry that link, because each announces something you did not cause and needs a page to send you to: the verification code at the foot of this page, and the two an operator's action sends - Exchange disconnected and App Lock removed.
What every notification looks like
Whatever the message says, the frame around it is the same:
- a 🔔 bell,
- the title in bold,
- sometimes a timer in brackets,
- a blank line,
- then the body.
The bot builds that frame in exactly one place, so it never differs between two notifications - with one exception: the referral notice, credit added, is sent without the bell.
The timer
(3.2s) after the title is how long the bot took, measured from the moment you pressed
the button that started it.
It appears only on messages that answer something you pressed in Telegram: Manual Entry, Sniper, Add To Position, Update Take Profit and Send Position Update. A message that does not answer a button press carries no timer at all. A missing timer is not a fault; it tells you where the message came from.
About the examples on this page
The frame around each example below - the bell, the title, the timer, the spacing - is built by the bot's own code, so it is exactly what your chat will show.
The numbers are a made-up BTCUSDT trade, not yours. And for Trade Rejected, Order Failed and Error, the body text is written in the bot's own wording rather than captured from a real send: those bodies are assembled at the moment the bot talks to the exchange, and cannot be reproduced without one. Read them as a faithful example of the shape and phrasing, not as a string to match character for character.
Rejected, Failed and Error are three different things
Three of these messages tell you a trade did not happen. They are not interchangeable, and the difference is who said no.
| Message | Who declined | What it means |
|---|---|---|
| ❌ Trade Rejected | The bot | Most often your own rules turning the trade away before it was ever sent to Bybit - a few reasons are about your account's plan or link status instead. Either way, nothing was placed and nothing was risked. |
| 🚨 Order Failed | The exchange | The bot did send the order. Bybit refused it, or the order was placed and then something after it went wrong. |
| 🚨 Error | Neither, cleanly | The attempt broke part-way through - a timeout, a wallet call that failed, an unexpected fault. The bot cannot tell you what state the trade is in, only that it did not finish. |
The practical difference: a Rejected trade usually needs you to change a setting, link your account, or accept the answer - the one exception is a plan that could not be determined at all, which is a server configuration problem and needs neither. A Failed or Error trade needs you to go and look at Bybit, because the bot stopped being sure what is there.
✅ Trade Executed
$78293.00
Margin Used: $4.97
Risk: $0.46 (0.45% of balance)
Current Position
Avg. Entry: $78149.30
Take Profit: $77406.00
Position Size: 0.002 ($156.30)
Value: $156.30
Initial Margin: $4.97
Maintenance Margin: $0.52
Entry Fee: 0.05500%
Stop Fee: 0.05500%
Risk-Reward Ratio: 2.86
Net Profit (after fees): $1.31
Net Loss (after fees): $0.46
Total Risk: $0.46 (0.45% of balance)9:35 PMA new position was opened - from Manual Entry or from Sniper. This is the message that means a position now exists where there was none: it is only ever sent for a first entry. Enlarging a position you already had is Position Added below, which places a real order too.
The body is built by the same code as 🔍 Preview, so it reads identically to the
preview you may have just seen - only the heading differs, Current Position here against
Projected Position there. It gives the symbol, side and leverage; the one leg it just
opened, with its stop, its margin and its dollar risk; then the position as a whole,
including the risk-reward ratio and the net profit and net loss after fees.
Net Loss (after fees) is the number that matters most. It is what this trade costs you if
the stop fills - the loss the bot sized the position to produce.
If the leg line carries a (capped from requested 1.5%) note, your
Daily Loss Limit was in Cap Risk mode and shrank
the trade to fit the day's remaining budget. The trade still went on; it went on smaller
than you asked for.
✅ Position Added
$78872.30
Margin Used: $5.00
Risk: $0.51 (0.48% of balance)
Leg 2 (Market): 0.003 @ $79499.70 🆕
Stop Loss: $79233.90
Margin Used: $15.04
Risk: $1.06 (1.00% of balance)
Current Position
Avg. Entry: $79447.58
Take Profit: $80436.50
Position Size: 0.004 ($317.79)
Value: $317.79
Initial Margin: $20.04
Maintenance Margin: $1.05
Entry Fee: 0.05500%
Stop Fee: 0.05500%
Risk-Reward Ratio: 2.30
Net Profit (after fees): $3.61
Net Loss (after fees): $1.57
Total Risk: $1.57 (1.48% of balance)9:35 PMA further leg was added to a position you already had, through Add To Position. The new leg is marked 🆕.
This message re-states the whole trade, not just the part that changed. That is
deliberate: a scaled-in trade has one stop per leg, so the only useful summary is all of
them at once. Total Risk at the bottom is the trade's combined risk across every open
leg - the figure the trade's budget is spent against.
When the size was cut down
$78659.10
Margin Used: $11.43
Risk: $1.03 (0.97% of balance)
Leg 2 (Market): 0.004 @ $78839.50 🆕 (capped from requested 0.005)
Stop Loss: $78659.10
Margin Used: $11.44
Risk: $1.07 (1.01% of balance)
Current Position
Avg. Entry: $78838.10
Take Profit: $80436.50
Position Size: 0.008 ($630.70)
Value: $630.70
Initial Margin: $22.87
Maintenance Margin: $2.08
Entry Fee: 0.05500%
Stop Fee: 0.05500%
Risk-Reward Ratio: 6.32
Net Profit (after fees): $12.09
Net Loss (after fees): $1.91
Total Risk: $2.10 (1.99% of balance)9:35 PMSame message, with one extra note on the new leg:
(capped from requested 0.005)An add is capped rather than refused. The bot re-checks both of the trade's caps - the quantity ceiling and the remaining dollar risk budget - against live prices at the moment you press Send, not at the moment the panel was drawn. If less room is left than you asked for, it places what fits instead of turning you away, and takes the smaller number without complaint.
That note is what stops the cut being silent. You get it in two situations:
- you typed a Quantity larger than the caps now allow, or
- you left the quantity on Max available and the trade's dollar budget turned out to be tighter than its quantity ceiling.
Without the note you would have no way to tell a deliberate small add from one the budget quietly trimmed. With it, the requested size is on the record beside the placed one.
A capped add is still a successful add
The title stays Position Added. Nothing failed - the caps did exactly their job. If there had been no room at all you would have got no message: a refused add is a popup on the Send button, not a notification.
📊 Position Updated
$79291.20 (breakeven)
Margin Used: $5.00
Risk: $0.51 (0.48% of balance)
Leg 2 (Market): 0.003 @ $79499.70
Stop Loss: $79233.90
Margin Used: $15.04
Risk: $1.06 (1.00% of balance)
Current Position
Avg. Entry: $79447.58
Take Profit: $80436.50
Position Size: 0.004 ($317.79)
Value: $317.79
Initial Margin: $20.04
Maintenance Margin: $1.05
Entry Fee: 0.05500%
Stop Fee: 0.05500%
Risk-Reward Ratio: 2.30
Net Profit (after fees): $3.61
Net Loss (after fees): $1.57
Total Risk: $1.15 (1.09% of balance)9:35 PMThe same full summary as Position Added, but nothing was traded to produce it. This is what 🔄 Send Position Update on the Add To Position panel posts.
It is recomputed from Bybit's live position rather than replayed from the last add, which
is what makes it worth asking for: legs that have closed on their own since the last
notification are dropped from the profit figure, and a leg marked breakeven shows its stop
at its own entry with (breakeven) beside it, as Leg 1 does above.
Use it when a trade has moved on and the last message about it is stale.
🎯 Take Profit Updated
$79291.20 (breakeven)
Margin Used: $5.00
Risk: $0.51 (0.48% of balance)
Leg 2 (Market): 0.003 @ $79499.70
Stop Loss: $79233.90
Margin Used: $15.04
Risk: $1.06 (1.00% of balance)
Current Position
Avg. Entry: $79447.58
Take Profit: $80436.50
Position Size: 0.004 ($317.79)
Value: $317.79
Initial Margin: $20.04
Maintenance Margin: $1.05
Entry Fee: 0.05500%
Stop Fee: 0.05500%
Risk-Reward Ratio: 2.30
Net Profit (after fees): $3.61
Net Loss (after fees): $1.57
Total Risk: $1.15 (1.09% of balance)9:35 PMThe same live summary again, sent once Update Take Profit has moved every leg's target. The take profit it shows is the new one. It cannot be switched off.
❌ Trade Rejected
The bot declined. Nothing reached Bybit, nothing was placed, and nothing was risked.
The body opens with one line beginning Reason:, naming which of your own rules turned the
trade away. The reasons, and the pages that explain them:
| Reason | Page |
|---|---|
| This bot is paused by you | Plans |
| This bot is not linked to a Risbot account | Linking Telegram |
| This bot is paused automatically | Plans |
| Your plan allows N trades a day | Plans |
| Your plan could not be determined | Plans |
| Risk-Reward Ratio after fees too low | Manual Entry |
| Order quantity too small for the symbol | Manual Entry |
| Leverage too high | Manual Entry |
| Insufficient margin available | Buffer Percent |
| Position already exists for the symbol | Add To Position |
| Pending orders exist for the symbol | Closing |
| Daily loss limit reached | Daily Loss Limit |
| Trading day not allowed | Trading Days |
| Requested risk exceeds your per-trade ceiling | Max Risk Per Trade |
One rejection carries links
A bot with no Risbot account behind it is the one rejection whose answer is a page rather
than a setting, so its Reason: line ends by pointing at one:
Both links, because the bot cannot tell whether you have never registered or have an account you have not linked to this chat yet. See Linking Telegram.
A rejection where the position already exists carries a pointer to Add To Position, since that is usually what you actually wanted.
Every rejection is also written to your trade history, so a run of them is visible in Performance rather than only in the chat.
Refusing an add is not this message
This notification is only ever about opening a new position. When Add To Position, Mark Legs Breakeven or Update Take Profit refuse, the reason appears as a popup on the button you just pressed and nothing is sent to the chat - you are already looking at the panel, so there is nothing to notify you about.
🚨 Order Failed
The exchange declined. The bot got as far as sending the order; Bybit did not accept it.
The body names the symbol and the side, then Bybit's own error text and error code, then the size that was attempted. When the failure is a permissions problem - an API key without trading rights - the bot says so plainly instead of quoting the raw code, because a scope refusal is not a trading problem and sends you looking in the wrong place otherwise.
A limit order that Bybit auto-cancels for crossing the spread is retried three times, twenty seconds apart, before this message is sent. So for a limit order this notification can arrive a full minute after the order was first placed, and it means every retry was used up.
Some of these need you on the exchange, now
A small family of more serious messages arrives the same way, and none of them can be switched off. They look the same but say something different:
- 🚨 Add Failed - the add never filled.
- 🚨 Add Placed But Stop-Loss FAILED - the add did fill, and its stop did not go on. That leg has no stop-loss protection.
- 🚨 URGENT: Stop-Loss Rebuild Failed - after changing a take profit or marking a leg breakeven, one or more legs' stops could not be put back.
The last two mean there is real, unprotected size on the exchange. Open Bybit and check the position yourself - do not wait for the bot to correct it.
🚨 Error
Something broke part-way through - the exchange timed out, a balance call failed, or an unexpected fault stopped the attempt.
This is the least specific of the three, and the most worth acting on, because it is the one case where the bot cannot tell you what happened. The order may not have been sent, or may have been sent and not confirmed. Check Bybit before retrying.
Two things make Error unlike the others:
- It cannot be switched off, because a silent failure is worse than an unwanted message.
- A wallet failure is reported even from a Preview. A dry run normally sends nothing at all, but if Bybit itself refuses the balance request, that is a real problem with your connection rather than a hypothetical about a hypothetical trade, so it is surfaced anyway.
🚫 Trading Day Not Allowed and 🚨 Daily Loss Limit Reached
Two more messages arrive unprompted, and both mean the same thing: a guard you set would have stopped this trade, and you have told it not to.
- 🚫 Trading Day Not Allowed - a trade arrived on a weekday you excluded in Trading Days, with the mode set to Notify Only.
- 🚨 Daily Loss Limit Reached - the day's losses have passed your Daily Loss Limit, with that guard's mode set to Notify Only.
Both end with the same clause, and it is the part to read carefully:
Notify-only mode is active, so new trades will still be placed.The trade went through. These are not rejections - they are the guard reporting a breach it was configured to observe rather than act on. If you wanted the trade stopped, the mode is what to change, not the notification.
Each is sent once per local day, on the first trade that trips it, so a guard you are trading straight through does not fill the chat. The day rolls over on your configured UTC offset, not on Bybit's clock.
Neither has a switch of its own.
Which ones you can turn off
Two switches, in ⚙️ Settings → 🔔 Notification Settings - see Notification Settings. Each covers a family of messages rather than one message:
| Switch | Also silences |
|---|---|
| Balance Warning | the message that your Bybit balance has drifted outside its Balance Range |
| Isolated Margin Warning | the warning that your Bybit account is not on Cross margin |
Everything else always sends.
Trade Executed, Trade Rejected and Order Failed used to be switches and are not any more. They are the record of what happened to your money: what opened, what was turned away and why, and what the exchange refused - including a stop-loss that failed to rebuild, which means a position may be sitting there unprotected. Those are not messages to have muted six months earlier by somebody who was tidying a settings screen.
Position Added, Take Profit Updated, the add and stop-loss failure alerts and Bybit Disconnected have no switch for the same reason.
The other four have never had a switch, for three reasons. Error is always sent, because a silent failure is worse than an unwanted message. Position Updated only ever arrives because you pressed the button that asks for it, so there is nothing to mute. Trading Day Not Allowed and Daily Loss Limit Reached are already the quiet setting - they exist only because you chose Notify Only over rejecting the trade, and muting them would leave that mode doing nothing observable at all.
A missing switch means on
If the bot cannot read your settings for any reason, the notification is sent. Failing quiet would mean a broken lookup silently stopping the messages that tell you your money moved.
Previews send nothing
🔍 Preview runs the whole calculation and places nothing, and it notifies nothing either - everything it would have sent is shown to you on the panel instead. The one exception is the wallet failure described under Error above, which is a real fault rather than a rehearsal of one.
The verification code message
There is one more message the bot sends unprompted: a code, asking you to confirm you own the account, after you contact support.
It is not a trading notification and it is not covered here. It is the second half of a procedure - including the rule that you never send that code anywhere but the support conversation you started - and that procedure is on Checking a Bot Is Ours, which is also where the message's own link points.