TeleChars AI lets you create AI characters that chat on Telegram without programming.
Create account
Sign up with email and password
Enter Dashboard
You'll see public telechatbots from other users
Start
Click "Create telecharbot" in the menu
Create AI characters for Telegram without code!
TeleChars AI lets you create AI characters that chat on Telegram without programming.
Sign up with email and password
You'll see public telechatbots from other users
Click "Create telecharbot" in the menu
Simple process in 7 steps:
Public name and unique username
Optionally upload profile and banner pictures (<4MB)
Describe how it is (maximum 5000 characters)
Optional public description (1000 characters) - It will be automatically generated with AI when editing if left empty.
Optional instructions for generating the response (2000 characters)
Optional conversation examples to guide the telecharbot (2000 characters)
You can configure optional TTS so the telecharbot responds with audible voice (only with your own API Key and if the message has 4096 characters or less)
{user}: Hello
{ai}: Hi! Do you want me to recommend a book? πPersonality defines how your Telecharbot speaks and acts.
What is it? (assistant, friend, expert)
Kind, funny, serious, curious.
Formal, casual, technical.
Topics it masters.
What it does NOT know how to do.
Two types of memory:
Teach specific information to your Telecharbot by organizing it in sections that only you will see.
Ex: "My History", "Technical Data".
Maximum 8000 characters per knowledge.
0.1-1.0 (how similar the question should be).
Connect your Telecharbot to Telegram in minutes:
Search for @BotFather on Telegram.
Send /newbot and follow the instructions.
Copy the token BotFather gives you.
In the "Integrations" tab of your Telecharbot.
Search for your bot: @[your_bot_username]
/newbot - Create bot/token - View token/setcommands - Configure commands (TeleChars AI does it for you)/activate - Activate telecharbot in a chat/deactivate - Deactivate telecharbot/start - Welcome message/wack - Delete short-term memory in a chat/reset - Reset long-term memory in a chat/sleep - Save long-term memory in a chatAdvanced options:
| Parameter | Range | Recommended |
|---|---|---|
| Temperature | 0.0-1.5 | 0.7 |
| Top P | 0.1-1.0 | 0.9 |
Advanced models like Qwen3.6 Plus or Claude 4.5 Haiku will consume your neurons. Each free user receives 80 neurons every 24 hours (non-cumulative). Consumption is calculated by tokens: for example, MiniMax M2.7 costs 2000 tokens per neuron for input and 400 tokens per neuron for output. Neurons are only deducted when you reach or exceed that threshold (e.g., 1999 input tokens cost nothing). Large fallback models do not work with neurons - you need your own API Key to use them.
Each message uses ~160 base tokens, not counting:
Create custom commands with simple code.
# Send message to user
SendMessage("Hello!")# Detect command
If IsCommand("/start") Then
SendMessage("Welcome!")
Stop # Stops the script
EndIfStop is CRUCIAL after SendMessage() to avoid duplicate responses
# Detect command and remove from message
If IsCommand("/search", True) Then
# The user wrote "/search kittens" (or "/search@your_telecharbot kittens" in groups)
# The telecharbot sees only "kittens"
# Do NOT use Stop here, as it would make the telecharbot not send any message
EndIf# Temporary context (only this message)
SetLLMContext("Respond as a cooking expert")# Instructions to LLM (only with own API Key)
SetLLMInstructions("Translate everything {user} says to English")
# β οΈ Consumes tokens from YOUR account# Save data
SaveSettings("points", "100")
points = LoadSettings("points")
SaveSettings("points") # Empty data to delete them# Get IDs
userId = GetUserID()
chatId = GetChatID()# Create a button for keyboards
CreateButton("text", "callback_data")# Create an option for keyboards
CreateOption("text")# Limit a keyboard to one-time use
OneTimeKeyboard(keyboard)# Create a keyboard with buttons
# For one row: pass the buttons as arguments
keyboard = CreateKeyboard(button1, button2, β¦)
# To turn it into a one-time keyboard (optional)
keyboard = OneTimeKeyboard(keyboard)
# For multiple rows: pass arrays of buttons
row1 = CreateKeyboard(button1, button2)
row2 = CreateKeyboard(button3, button4)
keyboard = CreateKeyboard(row1, row2)# Create a keyboard with options for the user
# For one row: pass the options as arguments
keyboard = CreateOptions(option1, option2, β¦)
# For multiple rows: pass arrays of options
row1 = CreateOptions(option1, option2)
row2 = CreateOptions(option3, option4)
keyboard = CreateOptions(row1, row2)
# To remove the keyboard: pass the following function as the keyboard parameter in SendMessage:
keyboard = RemoveKeyboard()# Copy messages from supergroups
CopyMessage(numeric_id_of_message_to_copy, "chat_id_of_message_to_copy")# Example 1: Translator
If IsCommand("/translate", True) Then
SetLLMContext("Translate to English")
EndIf# Example 2: Response modes
If IsCommand("/serious_mode") Then
SendMessage("Serious mode activated.")
SetLLMContext("Respond in a serious and professional manner.")
EndIf
If IsCommand("/fun_mode") Then
SendMessage("Fun mode! π")
SetLLMContext("Respond in a cheerful way with emojis.")
SaveSettings("fun_" & GetChatID(), True)
EndIf# Example 3: Points system
If IsCommand("/points") Then
points = LoadSettings("points_" & GetUserID())
If points = "" Then points = 0
SendMessage("You have " & points & " points")
Stop
EndIf
If IsCommand("/addpoint") Then
key = "points_" & GetUserID()
points = LoadSettings(key)
If points = "" Then points = 0
points = points + 1
SaveSettings(key, points)
SendMessage("+1 point! Total: " & points)
Stop
EndIf# Example 4: Poll with buttons (classic method with JSON)
If IsCommand("/poll") Then
keyboard = "[{~qtext~q:~qπ Yes~q,~qcallback_data~q:~qyes~q},{~qtext~q:~qπ No~q,~qcallback_data~q:~qno~q}]"
SendMessage("Do you like TeleChars AI?", 0, keyboard)
Stop
EndIf
# Handle button press
callbackData = GetCallbackText()
If callbackData <> "" Then
If callbackData = "yes" Then
SendMessage("Thank you! π")
Else
SendMessage("How can we improve?")
EndIf
Stop
EndIfIn strings, ~q is a quick way to put double quotes, just as ~n are line breaks, and ~t are tabs.
# Example 5: Poll with buttons (new method with CreateButton and CreateKeyboard)
If IsCommand("/poll") Then
button1 = CreateButton("π Yes", "yes")
button2 = CreateButton("π No", "no")
keyboard = CreateKeyboard(button1, button2) # One row with two buttons
SendMessage("Do you like TeleChars AI?", 0, keyboard)
Stop
EndIf
# Handle button press (same as before)
callbackData = GetCallbackText()
If callbackData <> "" Then
If callbackData = "yes" Then
SendMessage("Thank you! π")
Else
SendMessage("How can we improve?")
EndIf
Stop
EndIfThis example simplifies keyboard creation without needing to write JSON manually.
# Example 6: Keyboard with multiple rows
If IsCommand("/menu") Then
row1 = CreateKeyboard(CreateButton("Option 1", "opt1"), CreateButton("Option 2", "opt2"))
row2 = CreateKeyboard(CreateButton("Option 3", "opt3"), CreateButton("Option 4", "opt4"))
keyboard = CreateKeyboard(row1, row2) # Combines the rows
SendMessage("Select an option:", 0, keyboard)
Stop
EndIf
# Handle buttonsβ¦
callbackData = GetCallbackText()
If callbackData <> "" Then
SendMessage("You chose: " & callbackData)
Stop
EndIfTo create multiple rows, first create each row with CreateKeyboard and then pass them to another CreateKeyboard
# Example 7: Options keyboard for the user
If IsCommand("/options") Then
row1 = CreateOptions(CreateOption("Option 1"), CreateOption("Option 2"))
row2 = CreateOptions(CreateOption("Option 3"), CreateOption("Option 4"))
keyboard = CreateOptions(row1, row2) # Combines the rows
SendMessage("Select an option", 0, keyboard)
Stop
EndIf
# Handle options: first get the user's message text
userText = GetValue("user_text")
# Now look at the beginning of the text for the fragment "Option ", to ensure it's one of the options we defined
# (The trailing space ensures that something comes after "Option")
If Instr(userText, "Option ") = 1 Then
# Use the same keyboard parameter to remove it with RemoveKeyboard()
SendMessage("You chose: " & userText, 0, RemoveKeyboard())
Stop
EndIf# Example 8: Message copying
If IsCommand("/sticker") Then
# For message links like https://t.me/c/1234567890/123
CopyMessage(123, 1234567890)
Stop
ElseIf IsCommand("/sticker2") Then
# For message links like https://t.me/c/AbCdEFgh/123
CopyMessage(123, "@AbCdEFgh")
Stop
EndIfStop after SendMessage() generates duplicate responses./translate [text]/serious_mode/fun_mode/points/poll/quiz/remember [text]No! Everything is configured from the visual interface. BlitzScript is optional.
Yes. You can use engines like Gemini 2.5 Flash (Lite), GPT 5 Nano, DeepSeek V4 Flash, or Mistral Small 3.1 24B at no cost. More powerful engines require your own API Key (some also work with neurons)
Yes! As many as you want, each with its own personality. But keep in mind the bot limit of your Telegram account. For free users, the limit is 20 bots in total. You can delete them to create more.
Yes, each telecharbot has separate and private conversations.
In the "Integrations" section of your telecharbot, click "Update Commands on Telegram".
Stops the script completely. Use it after SendMessage() to avoid duplicate responses.
Yes, and it consumes tokens from YOUR account. It doesn't work with the free API.
Use SaveSettings("name", value) to save and LoadSettings("name") to load.
1. Check the token
2. Wait 1-2 minutes
3. Verify the telecharbot is activated with /activate
4. If it doesn't respond in DM, try deleting the token in TeleChars AI β save β put the token back.
5. If it still doesn't work, revoke the bot token in Telegram with @BotFather.
Yes, from the "General" section.
Yes, although only those added by Marcos F R Games. You can ask him to add more tools - he will add them whenever he can maintain them. For your telecharbot to be able to use the tools, you must insert your own API Key in its "Integrations" section.
Yes, through message copying. To do this, you must make your telecharbot say something like <m:(group id or @name):(message id)>To find the sticker:
1. Send a sticker to a group where your telecharbot is on Telegram.
2. Copy the message link. Telegram will return something like https://t.me/c/1234567890/123
3. Convert https://t.me/c/1234567890/123 to <m:1234567890:123>
4. Make your telecharbot say <m:1234567890:123>