Hire developers Community Blog Find a dev job Log in
Close menu
: Programmable Banking Community: Make Banking More Interactive with Your Own Telegram Bot Banker
Less noise, more data. Get the biggest data report on software developer careers in South Africa.

Programmable Banking Community: Make Banking More Interactive with Your Own Telegram Bot Banker

25 October 2022, by Nick Benson

Michael Oosthuizen manages to make the dry subject of banking more interactive and interesting with Telegrammetry, his submission in the recent Spreadsheet Banking Hackathon. Here, at last month’s Programmable Banking Meet-up, Michael demos his app, which integrates a Telegram bot with Excel sheets.

Transcript of the demo

Nick Benson 0:00

The first one is Telegrammetry. Telegram-achi? I have no idea how to say this.

Michael Oosthuizen 0:06

Neither do I. But it looks cool!

Nick 0:09

Okay, it looks cool. Yeah, I think it needs a logo or something. Michael, are you ready to go?

Michael 0:16

Cool, Nick, thank you. Let me just share my screen. I appreciate you introducing us with the soft landing of, ‘if something can go wrong, it probably will’. Although I did sacrifice a Windows XP PC earlier today to the demo gods. So hopefully that will make a difference. Given the nature of the audience, I’m sure I don’t need to explain what Telegram is. But, just in case, it is a messaging app. It’s quite popular. Some people value its stance on privacy, a lot higher than that of WhatsApp. But anyway, it’s also a lot easier to integrate with. The problem that we tried to solve – and I say we because credit for the original idea actually goes to the community as a whole, for setting this up as a bounty – is to be able to have another vector to get information from your sheet. You don’t always have access to internet banking; you’re not always going to have the app downloaded on your phone and set up in exactly the same way. All of that. And on top of that, this is just the more natural, organic experience. It’s something unique. In this spreadsheet – let me just delete this useless one – there are three sheets of interest. The first one is the Telegram set-up. I won’t go through the whole thing now. Long story short, there are several steps to follow. It’s quite an easy process. You go into Telegram, you create a bot; you type into this cell what username you gave to the bot. You type into this what bot token got returned to you. And this isn’t complicated. When you talk to the Telegram servers inside of the Telegram app that guide you through this process, it says explicitly ‘this is your token’. And then the last step, you switch it on. And this is just a nice data validator field to do that. And there we go. Now we’re ready to go. The sheet that I had on before, is the Telegram Configurator. This is where all the behaviour that you’re going to be seeing in the next three minutes is defined and you’ll see it’s empty. So, we can go through and build something together. I’m going to go to Telegram quickly. I just want to get a nod from someone, do you see the Telegram web interface on my screen? OK. Excellent. I’ve already, like I mentioned, gone and created a bot. My bot is called My Personal Banker Bot. So that one’s taken unfortunately, ladies and gentlemen; you will have to think of your own name. But anyway, let me search for that My Personal Banker Bot. There we go. This is the bot on Telegram. And due to the nature of how bots work, you actually have access to this right now. But I’ll ask that you hold off from trying to play with it until the seminar is done. As with all other Telegram bots, you click on ‘start’ on the top to initiate conversation. And then there’s a response. So that’s the exact same response that’s defined here. Let’s go ahead and add some other stuff. Let’s say that we want three different options on that main menu. Let’s say, ‘cards’. Let’s say you’ve got a company account. And let’s say that you want to have a look at transactions as well … Sorry, I put it in the wrong column … What I’ve done here is I’ve just defined the name of an option. This first column, if anyone’s familiar with the data structure of a […] decision tree, you’re basically just saying when you want each of these options to appear. For now, let’s just say ‘main menu’ for each of them.

Michael 4:10

You’ll also notice that there is a nice dropdown that’s based on the data in here. And then an action. For the time being, we’re not going to do anything. I’ll go back into Telegram and we’ll send the start message again. And now, there’s our menu. Right, if we click on these, absolutely nothing’s going to happen. Let’s get into the actual fun functionality. Let’s say that on the ‘cards’ menu, we want to be able to retrieve the limit on your main card, so we’ll put in an option called … let’s just call it ‘main card’ for now. Here is the value and we will select the action of ‘return a value’. Now these two columns over here, are the inputs for what value to return. The first is the sheet. In this case, it will come from the card’s sheet. And I’ll just go to the card’s sheet. And we’ll look at which cell’s data we want. So, we want the transaction limit for our first card; that’s cell number D2. We go back to the Configurator, we type in D2. And we make sure that this option shows when we select ‘cards’. So that’s done. Going back into Telegram, we can now select ‘cards’ and it’ll show two options. Being the option that we just programmed and … oh dear. So, what happened here is I didn’t say what should happen when you select the ‘cards’ option. And what we want to see is the child options. Let me try that again. There we go. And just to prove that that works, you click on it, it gives back that message and it gives back that value. Let’s do something a bit more exciting. Let’s say you want to list your cards. So, I’m going to put an option here called ‘list my cards’; we’re going to say that it should appear under the cards menu. ‘Here is a list of cards’. And we can do another action called ‘enumerate a list’. And what that will do is use the native functionality built into Excel called [inaudible]. We’ve already got in that sheet that contains the cards it set up with a name called ‘TBL cards’. So that’s the value that you saw me fill in here just now. And now just like that, like magic, we have a new option. And let me show off how that works. We go back to my menu, select the ‘cards’ option. And ‘list my cards’. Now what will happen is the pre-programmed response. But as opposed to the previous functionality, it now sends a few messages depending on how much information you have on the list. I’ve still got a minute or so left, so I’m going to show off the fanciest feature, in my opinion, which is the AI integration. Now let’s say you’ve got a variety of questions that you might want to pose. Instead of having to program the functionality, even though as I’ve hopefully convinced all of you, it’s quite simple, you can feed this into the AI. I am going to program an option here called ‘ask a card question’. And this one’s action is going to be ‘ask the AI a question’. The set-up for this is a little bit trickier; you have to first concatenate all of this data into a sentence. So instead of just that table here, I say ‘card number blah, blah, blah, is held by blah with transaction with’ etc. But anyway, you feed [in] the cell number, in this case H2, as the input for that. And we can ask a question. So let me show that off quickly. By the way, the reason we’re going back up a level in the menu and back down again is that’s what you have to do to get it to reflect the new option [inaudible]. ‘Cards’, ‘ask a card question’. And let’s say ‘how many cards do I have disabled?’.

Michael 8:31

[…] [Laughs] Could you give me 30 seconds of the end, Nick, to show this off? I’ll debug it and see what happens. So yeah, that’s about it.

Pieter Heyns 8:47

I think it’s not ‘H’. I think the cell reference […] is ‘G’ not ‘H’.

Michael 9:02

Oh. No. It is definitely ‘H’. ‘H’ is my concatenation of concatenations. I’ll debug that. Are there any questions in the meantime?

Rudi Storm 9:14

My question is always, Why do you wait until he fails before you tell him, ‘No, it’s actually G2’?

Nick 9:25

Cool. Pieter, any feedback from your side regarding this?

Judges Comments

Pieter 9:34

Thanks a lot for doing that submission. I think being able to get this kind of information and interact in this way through chat tools, with your banking, with your bank statement and your bank transactions is really cool and potentially really powerful. I can think of many different places where this could be really cool if you can integrate with other chat apps like Slack, for example, or Telegram; even where teams work to authorise transactions. I just think generally, this is a very useful feature. And I like the fact that you can basically build these menus without having to write code. You can build many things that people could potentially use in companies to query and get financial information without the need to get developers to do it. I think this is a really cool idea.

Michael 10:27

Yeah. It absolutely was the intention that there should be no code. The scope was just short of allowing bidirectional data. So, the next step might have been to allow someone to create a new virtual card, for example, by sending a message back to the bot.

Nick 10:45

And Devina?

Devina Maharaj 10:48

Yeah, Michael, I really liked […] the demo and […]. I think even the way you articulated the problem statement. Wayne and I sat and looked at all of the submissions, and like Nick, in the beginning, it probably took us the first five minutes, just saying the name. And we were both just having a laugh, because we just couldn’t […]. I can’t even … I’m not even going to try; I’m just going to fail hopelessly. But I think what I really liked about it was the personalisation aspect of it, and it actually makes you feel like you can really interact with banking. Banking is such a dry, horrible subject; it’s really hard to make it quite interactive and nice. And I think what using this type of medium [does], is it makes it real for a couple of reasons. One is it takes away the fear factor of people asking questions and having to call in and actually speak to a banker or speak to a human being. It’s just a very nice, easy, interactive way about it. And the convenience, 100%. For me, what was an interesting application is, I’ve got two daughters, 13 and nine. And I can tell you, if you put them on something like this, and they’ve got a youth account, it could be amazing […] because the way they interact with our Google Home now. Google is their bestie. And when I can’t answer stuff […], they just go and ask Google. For kids to be able to interact with a bot like this, I think on a youth-type account, is also quite interesting and exciting for me. So definitely, I think there are some really interesting angles to this. It was really exciting. And I think we can talk about other angles later on, as we go.

Michael 12:58

Thank you for the feedback, I appreciate it.

Nick 13:00

There will be more detailed feedback. All the judges gave really great detailed feedback in all of their submissions. I’ll post those post the event, so everyone can go and take a look at that feedback there. Dan also just raises the whole question in the chat to say, what about the other channels in Slack; can this become a Slack bot?

Michael 13:23

So that’s a bit of a more complicated question. The main thing is that the model of interaction, the interface that Telegram exposes is not necessarily the same as Slack. So, in Slack you might have channels where anyone responds, whereas with a bot, you’ve got to direct one to one. If we’re talking about other one-to-one services; email, if you want to be archaic, or WhatsApp, if you manage to get it integrated, then certainly. But I see the value of this less in diversity of different channels, but rather diversity of data that can be delivered through whatever that channel is.

Nick 14:04

A good way to approach it. I like it. Cool. Thank you, guys. And if there’s any more sort of questions that you have, please feel free to put it on to the mural board. And of course, we’ll try to […] answer those as much as we can do a during the course of tonight. Thank you very much, Michael. That was very cool.

Michael 14:21

Thank you, Nick. And please come back to me for just 10 seconds at the end. I have found the error.

Nick 14:25

No problem. Will do. I’ll just make a note of that.


Get involved in the Programmable Banking Community.

If you have questions or want to say hi to the Programmable Banking Community core team, you can pop us a mail, and we will get back to you.

If you want to see more about what the community has been up to, you can:


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Subscribe to our blog

Don’t miss out on cool content. Every week we add new content to our blog, subscribe now.

By subscribing you consent to receive OfferZen’s newsletter and agree to our Privacy Policy and use of cookies.