Probatio on Telegram

The bot trades the same accounts as this site, through the same engine. A fill placed from a chat waits out the same latency, is quoted against the same pool, and is sealed into the same record as one placed here.

Every command

CommandWhat it does
/startWhat this is
/helpThe list, in the chat
/verifyRecompute anybody’s record from its seals. Typed, replied, or inline
/buyBuy a token by name or by mint, with a size or from a card of sizes
/sellSell a share of a position by name or mint: a percentage, or all
/positionsWhat you hold, with sell sizes on each
/balanceFree SOL, total including positions, and your return
/seasonThe pot, the deadline, and where you stand in it
/watchA trader’s fills, in this chat, as they land
/unwatchStop following one
/watchingWho this chat follows
/linkConnect your Probatio account. Direct messages only
/unlinkDisconnect it. The record is untouched

Checking a record

/verify is the one this bot exists for. It fetches somebody’s sealed fills and recomputes every hash with the same open source code anybody else can run, then reports what the arithmetic says. It does not look an answer up and repeat it.

There are three ways to name a wallet, because people arrive with different things in hand:

  • /verify <wallet> when you have the address.
  • /verify as a reply to somebody’s message. It takes the address out of that message, and if there is none it uses the linked account of whoever wrote it. Somebody posts a claim, somebody else replies with seven characters, and the argument is over without either of them leaving the chat.
  • /verify on its own in a direct message, which means yours.

It also runs inline. Type the bot’s name followed by a wallet in any chat, including ones it has never been added to, and a verified record appears in the conversation. Nothing is cached, because the answer is a claim about a record that can change.

Three outcomes are kept strictly apart: a record that does not verify, a wallet with no record here, and the bot failing to reach the record. The last is the bot’s problem, not a verdict on anybody, and it says so.

Trading

/buy bonk searches by name and gives you a few matches to tap, with each one’s market cap beside it, because a name almost never picks out one token and the size is how you tell the real one from the impostors. Tapping one opens the same card the mint would have. /buy with a mint skips straight there.

/buy <mint> 0.5 fills straight away. Without a size it shows a card of sizes to tap, because a bot that picks a number for you has spent your money for you. Tapping a search result never places anything on its own for the same reason.

/sell bonk 50 sells half. A name here is matched against what you already hold rather than searched for: selling is only ever about a position that exists, so the answer is in a list the bot already has, and searching an index for it could offer to sell something you do not own. The word all works, and so does half.

A share is resolved against what you actually hold at the moment of the fill rather than baked into the button, so a card left sitting in a chat cannot try to sell tokens that are no longer there.

Every fill card prints what you were quoted beside what you were given:

  • the size asked for and the size filled, with the difference as a percentage
  • price impact, the fee, and how long the order waited in flight
  • your new balance, and what a sell realised
  • whether it was only partly filled, because the pool could not take the whole size
  • the sequence number it was sealed as, and a link to the record

Refusals are printed as plainly as fills. A rejected trade is a real outcome rather than an error: real transactions revert, and a simulator whose fills never fail is teaching a habit that costs money later. A suspended token, an unreadable chain and a price that moved past your limit are three different sentences.

/positions lists what you hold with a row of sell sizes on each one. /balance gives your free SOL, your total including open positions, and your return against what the account started with.

The season

/season gives the pot, how long is left to enter, what first place takes, and how many more entries would widen the payout. If you are in it, it says where you stand and by how much.

It works without an account, because the pot and the deadline are public and the person deciding whether to enter is exactly the person who has not linked anything yet. The figures come from the same functions the season page reads, so the two cannot disagree about the deadline.

Following a trader

/watch <wallet> and their fills arrive in that chat as they land, within about twenty seconds. It works in a group, so a room can follow somebody together, and it needs no account of its own: a watch delivers fills that are already on a public profile.

It starts from now. Subscribing to somebody with two thousand fills does not replay two thousand fills into the room. /watching lists who a chat follows and /unwatch drops one. A chat can follow ten traders, which is a ceiling so one person cannot fill a room up.

In a group

A card belongs to whoever summoned it. Anybody can tap anybody’s buttons in a group, so every button carries its owner and a tap from somebody else is refused rather than placing a real fill on another person’s public record.

/link refuses to work in a group at all, because a link code is a bearer token for an account and posting one into a room hands it to the room. An unknown command is answered in a direct message and ignored in a group, since in a group it is almost always somebody else’s bot being addressed.

Connecting your account

The bot knows who is typing and has no idea which wallet they own, so it cannot connect an account on its own. Send it /link and it hands you a code, then enter that code here signed in with the wallet you trade on. The signature is what proves the wallet; the code only carries you from one to the other. It is good for ten minutes and one use.

The link is keyed to you rather than to a chat, so it is the same account whether you type in a group on Monday or a direct message on Tuesday. One wallet per Telegram account and one Telegram account per wallet. /unlink disconnects and touches nothing else: the record is the record.

Until you link, the bot will check records and follow traders but will not place anything. The linking page is here.