πŸš€ First Steps

TeleChars AI lets you create AI characters that chat on Telegram without programming.

1

Create account

Sign up with email and password

2

Enter Dashboard

You'll see public telechatbots from other users

3

Start

Click "Create telecharbot" in the menu

πŸ€– Create your Telecharbot

Simple process in 7 steps:

1

Name

Public name and unique username

2

Image

Optionally upload profile and banner pictures (<4MB)

3

Personality

Describe how it is (maximum 5000 characters)

4

Description

Optional public description (1000 characters) - It will be automatically generated with AI when editing if left empty.

5

System instructions

Optional instructions for generating the response (2000 characters)

6

Conversation examples

Optional conversation examples to guide the telecharbot (2000 characters)

7

Voice messages

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)

Example:

Name: Luna, the Librarian Username: luna-librarian Personality: You are a kind virtual librarian. You love books πŸ“š Instructions: Respond with short sentences.

Conversation examples:

{user}: Hello {ai}: Hi! Do you want me to recommend a book? 😊

⚠️ The username must be unique

If it already exists, add numbers.

🎭 Personality

Personality defines how your Telecharbot speaks and acts.

1

Role/Profession

What is it? (assistant, friend, expert)

2

Character

Kind, funny, serious, curious.

3

Style

Formal, casual, technical.

4

Interests

Topics it masters.

5

Limits

What it does NOT know how to do.

Detailed example:

You are Alex, video game developer with 10 years of experience. You are patient and like to teach. You have geek humor and make references to games. You don't give financial or legal advice.

🧠 Memory

Two types of memory:

πŸ“ Short-Term Memory (STM)

  • What it is: Remembers current conversation
  • Messages: 10-100 (recommended: 50)

πŸ’Ύ Long-Term Memory (LTM)

  • What it is: Saves important info between chats
  • Time: 1min-24h (recommended: 40min)
  • Maximum: 1-20 memories (recommended: 5)
⚑ Initial configuration:
β€’ STM: Activated, 50 messages
β€’ LTM: Activated, 40min, 5 memories

πŸ“š Teach Knowledge

Teach specific information to your Telecharbot by organizing it in sections that only you will see.

1

Create section

Ex: "My History", "Technical Data".

2

Add content

Maximum 8000 characters per knowledge.

3

Configure relevance

0.1-1.0 (how similar the question should be).

Training example:

User

What can you do?

Telecharbot

I can help you create telecharbots! Are you interested in something specific? 😊

πŸ”— Connect to Telegram

Connect your Telecharbot to Telegram in minutes:

1

Open @BotFather

Search for @BotFather on Telegram.

2

Create bot

Send /newbot and follow the instructions.

3

Copy Token

Copy the token BotFather gives you.

4

Paste in TeleChars AI

In the "Integrations" tab of your Telecharbot.

5

Ready!

Search for your bot: @[your_bot_username]

πŸ’¬ Web Chat

You can also chat with your telecharbot directly from the web, without needing Telegram. Go to "View details" of your telecharbot in TeleChars AI and you'll find an integrated chat.

πŸ€– BotFather Commands:

/newbot - Create bot/token - View token
/setcommands - Configure commands (TeleChars AI does it for you)

⚠️ Common problems:

β€’ Incorrect token β†’ Verify it's complete
β€’ Telecharbot doesn't respond β†’ Wait 1-2 minutes and try again
β€’ Commands don't appear β†’ Click "Update Commands"

Automatic commands:

  • /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 chat

βš™οΈ Configuration

Advanced options:

🧠 AI Engine

  • Gemini 2.5 Flash (Lite): Free, recommended for characters with history and long chats
  • Mistral Small 3.1 24B: Free, recommended for coherent characters without many restrictions
  • Claude 4.6 Sonnet: Requires own API Key
  • MiniMax M2.7: Requires neurons (2000 tokens/neuron input, 400 tokens/neuron output). Ideal for smart responses.
  • Claude 4.5 Haiku: Requires neurons. Fast and efficient.
  • Other engines and providers: Will be added upon user request.

🌑️ Technical Parameters

ParameterRangeRecommended
Temperature0.0-1.50.7
Top P0.1-1.00.9

πŸ’° Credit System (Neurons)

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.

πŸ“Š Tokens (with own API)

Each message uses ~160 base tokens, not counting:

  • Conversation history
  • Complete personality
  • Retrieved knowledge
  • LTM memories
  • Chat information

For creative responses:

β€’ Temperature: 0.8-1.2

For precise responses:

β€’ Temperature: 0.3-0.5
πŸ”§ Own API Key: If you add your API Key, you'll have more AI engines. Token consumption includes the ~160 base + all additional content.

πŸ’» BlitzScript

Create custom commands with simple code.

⚠️ Important: The code runs on the server with a maximum execution time of 45 seconds

πŸ“ Essential Functions

BlitzScript
# Send message to user SendMessage("Hello!")
BlitzScript
# Detect command If IsCommand("/start") Then SendMessage("Welcome!") Stop # Stops the script EndIf

Stop is CRUCIAL after SendMessage() to avoid duplicate responses

BlitzScript
# 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
BlitzScript
# Temporary context (only this message) SetLLMContext("Respond as a cooking expert")
BlitzScript
# Instructions to LLM (only with own API Key) SetLLMInstructions("Translate everything {user} says to English") # ⚠️ Consumes tokens from YOUR account
BlitzScript
# Save data SaveSettings("points", "100") points = LoadSettings("points") SaveSettings("points") # Empty data to delete them
BlitzScript
# Get IDs userId = GetUserID() chatId = GetChatID()
BlitzScript
# Create a button for keyboards CreateButton("text", "callback_data")
BlitzScript
# Create an option for keyboards CreateOption("text")
BlitzScript
# Limit a keyboard to one-time use OneTimeKeyboard(keyboard)
BlitzScript
# 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)
BlitzScript
# 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()
BlitzScript
# Copy messages from supergroups CopyMessage(numeric_id_of_message_to_copy, "chat_id_of_message_to_copy")

πŸš€ Practical Examples

BlitzScript
# Example 1: Translator If IsCommand("/translate", True) Then SetLLMContext("Translate to English") EndIf
BlitzScript
# 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
BlitzScript
# 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
BlitzScript
# 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 EndIf

In strings, ~q is a quick way to put double quotes, just as ~n are line breaks, and ~t are tabs.

BlitzScript
# 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 EndIf

This example simplifies keyboard creation without needing to write JSON manually.

BlitzScript
# 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 EndIf

To create multiple rows, first create each row with CreateKeyboard and then pass them to another CreateKeyboard

BlitzScript
# 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
BlitzScript
# 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 EndIf
🚫 Common error: Forgetting Stop after SendMessage() generates duplicate responses.
πŸ’‘ Command ideas:
  • /translate [text]
  • /serious_mode
  • /fun_mode
  • /points
  • /poll
  • /quiz
  • /remember [text]

❓ Frequently Asked Questions

Do I need to know programming?β–Ό

No! Everything is configured from the visual interface. BlitzScript is optional.

Is it free?β–Ό

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)

Can I have several telecharbots?β–Ό

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.

Are my chats private?β–Ό

Yes, each telecharbot has separate and private conversations.

How do I update commands on Telegram?β–Ό

In the "Integrations" section of your telecharbot, click "Update Commands on Telegram".

What does Stop do?β–Ό

Stops the script completely. Use it after SendMessage() to avoid duplicate responses.

Does SetLLMInstructions require API Key?β–Ό

Yes, and it consumes tokens from YOUR account. It doesn't work with the free API.

How do I save/load data between chats?β–Ό

Use SaveSettings("name", value) to save and LoadSettings("name") to load.

A telecharbot doesn't respond on Telegram?β–Ό

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.

Can I import/export my telecharbot configurations?β–Ό

Yes, from the "General" section.

Can my telecharbot use external tools?β–Ό

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.

Can my telecharbot send stickers?β–Ό

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>