# Onboarding with Telegram

**URL:** <https://forum.aboutcircles.com/t/onboarding-with-telegram/457>\
**Category:** Circles general\
**Created:** [March 29, 2022, 2:36pm UTC](https://forum.aboutcircles.com/t/onboarding-with-telegram/457 "2022-03-29T14:36:58Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![alculexum](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aboutcircles.com/alculexum/32/108_2.png) [@alculexum](https://forum.aboutcircles.com/u/alculexum)\
**Post date:** [March 29, 2022, 2:36pm UTC](https://forum.aboutcircles.com/t/onboarding-with-telegram/457/1 "2022-03-29T14:36:58Z")

</div>

Currently many refugees from Ukraine are without financial support and even if they have money, they want to save it for most urgent matters. With Circles they could easily use a mechanism for “bookkeeping” if they trade with others or use Circles in bigger cities with Circles communities.

Almost all of these people use Telegram or know someone who does, probably even more than Whatsapp or other messengers.

So I was playing around with Telegram bots and thought about this: a bot that you can invite to a group, which displays the Circles usernames of the group participants if they either set it manually or used a derived username `(telegramFirstname + "_" + hash(telegramId)[0..8])`

## Bot API

- **/info** - prints the either manually set or derived Circles username
- **/set CIRCLES\_NAME** - sets the Circles username for this Telegram user (not verified!)
- **/query CIRCLES\_NAME** - queries api.circles.garden for the username and displays avatar + safe address
- **/transfer CIRCLES\_NAME AMOUNT** - watches User (Safe) address for `transfer` transactions to CIRCLES\_NAME for 10 blocks and notifies for successful transaction or timeout (10 blocks)

## Command Flow

### 1. Add Bot to Group

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/23339222eda50527c050c9ad9a3f7555dfc7cb68.png)

### 2. Call `/info` to let Group users know the Circles identity

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/77ee2613773ccff747dd24b4a849216f9ff07ae5.png)

### 3. Call `/query` to check name and safe address

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/6232f543c0b2b7c8b817755666188aea8ba7da5b.png)

### 4. Call `/set` if you have a Circles address already

same output as with `/info`

### 5. Suggested derived Circles Username if no Circles identity available

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/d0da0c828e560bf3868f34b71749814cb610f214.png)

### 6. Watch User (Safe) Address for `transfer` to other Circles User

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/1440a065a4a733eb0e792a5f3e49a59da9cf0eef.png)

---

<div class="post-metadata">

**Author:** ![alculexum](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aboutcircles.com/alculexum/32/108_2.png) [@alculexum](https://forum.aboutcircles.com/u/alculexum)\
**Post date:** [April 12, 2022, 6:58am UTC](https://forum.aboutcircles.com/t/onboarding-with-telegram/457/2 "2022-04-12T06:58:05Z")

</div>

Extended Bot API

- **/transfer CIRCLES\_NAME AMOUNT** - Watches User (Safe) address for `transfer` transactions to CIRCLES\_NAME for 10 blocks and notifies for successful transaction or timeout (10 blocks)

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/4c3854b4420114c06deeb4173a49959f82b4104c.png)

- **/verify SIGNATURE** - Validates the Circles User (against the Telegram User) by verifying an Ethereum Signature

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/6cd1ef68b897f9ed3c7207ed367dc5ab154d2ff4.png)

- Call _/verify_ first, sign the message and finally _/verify SIGNATURE_

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/ffccff67c842260915c60c927800afbb30799fdf.png)

- Go to [MyCrypto - Ethereum Wallet Manager](https://app.mycrypto.com/sign-message) to sign the message

_You have to import the private key into some wallet like MetaMask first to be able to sign._

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/aboutcircles/original/1X/e6613fe9627157fadf7831c0ffd0ae0c83d4845c.png)
