# Telegram Multi-User Bot

Vamos considerar um exemplo de robô que demonstra o funcionamento de um bot do Telegram com vários usuários. Cada um dos usuários pode interagir com o Chat GPT (utilizando um histórico de chat individual). A variável $NameSession indica o nome da sessão, após o qual é necessário se autenticar no cliente.

**Importante!** *Os dados de conexão com o Telegram podem ser encontrados no caminho: c:\Users\User\AppData\Roaming\Sherpa RPA Data\Telegram\\*

O projeto do robô consiste em dois diagramas.

O diagrama principal do projeto é assim (para conveniência, os blocos do diagrama estão numerados):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeUdEYPvdpSb-oGWIXVky27sLLSbDSc_1CoH6Pj3pmk9tnIFUB8b7JtLavA2uYoWB6ycA2-azMmLhV5_fI3VslbvPX1Z6a59ij9VBWs5jgC9pnYmNgUDWw8s-BUoDAF-tTfXzvl7w?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfnVu_KB5uO1dr5naTVdkY777z0B6i6_lctfumz-7zHvvQ70oZQH5uF_G3GDHwCgjbnqkEbt_rf9mbR3Yn6d0FJHQ-10m2Zf6JHL1aGJdc8jU-t_puiB3tromIawVmCPQobGUecsw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

1. **Bloco “Início”** (a partir deste bloco começa qualquer diagrama).
2. **Bloco “Processo”** permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto indicado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” do diagrama externo for alcançado. Para o bloco “Processo” é especificada a propriedade “Nome do diagrama” (nome do arquivo do diagrama, onde a execução do cenário continuará).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcGT_OkE8_rpRJgKN1eUB1dW07wFy23Buy02ZM0NYx8uzPVpN5vnN8AWUBYRjyGUx4YgDRDfxI3jr7n7EQkKcPhfmcejg558gYuNYSJVXVweRkDRF-4pB8uC9trTDEMqmhNuUkttg?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

3. **Bloco “Bot. Criar conexão”** permite criar conexões para o bot do Telegram. Para este bloco, as seguintes propriedades são especificadas:

* Token do bot (token do bot que pode ser obtido do BotFather no cliente do Telegram);
* Tempo de espera (tempo de espera pela resposta do servidor do Telegram em segundos).

Na saída, é obtida uma “Conexão” – uma variável com o objeto da conexão atual com o Telegram. Nos outros blocos, é necessário especificar exatamente essa variável.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfM2vBvLxOzQZs3SSF1YB3R05Hrsu3jekOPFzyDMChqCFAJxcFz9vrRxbYF5dBLU8l2NDZzHV3jdggvSV__-1wB17sVH0ogSNhT1CIMsoVcXbcdbPkaWORxrDzLhigUz1vJSy25?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

4. **Bloco “Bot. Receber mensagem”** permite receber uma mensagem ou callback da fila. Se não houver mensagens na fila, um erro é gerado. Para este bloco, é especificada a propriedade “Conexão” (objeto de conexão com o bot. O nome da variável nesta propriedade deve coincidir com o nome da variável na propriedade "Conexão", do bloco "Bot. Criar conexão" do grupo Telegram, que foi usado anteriormente para se conectar ao bot do Telegram).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfRCRlsoUq5_OjfJNJagNkM8Rzy2bQuJmFfYKhLOURwDEAAesqif75mIjtxS_W_LUJzFP9LP8QnTJM22lKnDsgReTsK-g6VVTQ-rh-shvqocJp8xDl3MiZbxuh1IfVm0-CCFPkpOw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

5. **Bloco “Atribuir valor à variável”** define novos valores para uma ou mais variáveis. Neste caso, nas propriedades é especificado um valor que deve ser atribuído a uma variável, respectivamente.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfqqOX78AtdZOrKDzWu6eLtW8sjSvLdZMvlddoJcF7b3iq36jnRBuYMagqufxxWiumB4iqC39a8bHJVkBlu-lMuvivr1PTIg2cwwF8BwEf0evxdSst062w5T05TiSrmdBwfOY6GQQ?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

6. **Bloco “Obter caminho”** permite descobrir o caminho completo para um arquivo/diretório. Para este bloco, as seguintes propriedades são especificadas:

* Caminho para a pasta (caminho para a pasta onde o arquivo necessário está localizado);
* Nome do arquivo (nome do arquivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd_u2PkOza_ehoLNMwPjiJWDg11VEme4heBX1QEPQTx-N8KulvWktps8aqDaNYRian6EBjgWw2RnnoT0eaqVGbMLv24icDYzfHWPY4K6L25tBahhKS1Ph2c6pXxvghBJjZ1U9uifg?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

7. **Bloco “Container”** permite ocultar o conteúdo. O conteúdo refere-se aos blocos que saem do atual através do conector inferior. Para o funcionamento correto, os blocos deste container devem terminar com o bloco “Fim”. Após a conclusão do trabalho dos blocos internos, será feita a transição pelo conector “Saída”. Neste caso, no container "Carregando dados do cliente" você pode alternar "Prompts" (ou definir os seus) e assim indicar o comportamento do chatbot. O conteúdo do bloco “Container” para este diagrama é assim:

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdYJdQrByzvv81v_GPldw7JG2lXu7k9ZRZUeObXHRSGXC6kjpxXDY_2BVEV7RG4VTefeiR9PIvhmEN6nN_21GOYbIgfVeUNPDkFeP6Xxv8EOKLv-oeFfo2AkAxo0YMo50AdvDEtfw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcP3c2BB4Ch7nPoS_nJCAMKzhzbeqJni3TWuH8IN4J2O8XRaYafx7Qbttaet6LdXf-bSa1PR2Sa3uCgmIkWI6sFRzq3ULKOR8uZrdgWiqnKsYeUVTx9MULI284CyDNKGZ44zDsT?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

7.1 **Bloco “Carregar do CSV”** permite carregar uma tabela de dados de um documento CSV. Para este bloco, as seguintes propriedades são especificadas:

* Caminho para o arquivo (caminho para o documento do qual as informações devem ser carregadas na Tabela de Dados);
* Delimitador (símbolo delimitador, por padrão é utilizado o ponto e vírgula);
* Codificação (codificação do arquivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdU293LMgwyPgViHODKCN2jpgR7JnhcoBaIBiuPpla5Uh5e_VyUm_WJb-_9hlL9sUuZMb3ELsjbkyP6V6boWI2K9DRG-Qla0W-1ZY1Lb0qnwCfnSzhrdqeif9ujgrZ0qdd04GPJ-A?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

7.2 **Bloco “Executar expressão”** inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, são utilizadas duas expressões.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe7swG9uCBYIzwGh3z0v0zLggd6tYGRZg540R2DDxcwamBo1VznH8cbyluLhTmVmIot2nkhtqHMtbKaZm39WAOAk9g1mDDwJ-NTMYOylQ0vGFXJrRz0C8YtGjurgcFYYxPJdtgeVw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

7.3 **Bloco “ToDo”** é usado como um marcador ou lembrete para funções planejadas para implementação. Ao contrário do bloco “Comentário”, este bloco é um elemento do cenário, mas não executa nenhuma ação.

7.4 – 7.11 **Blocos “Adicionar linha”** permitem adicionar uma linha à tabela de dados. Para os dados do bloco, as seguintes propriedades são especificadas:

* Tabela (tabela de dados à qual a linha é adicionada);
* Valores (lista de valores da nova linha).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcnrdRWYjFZsiYDK-D7jwH5y1ioZXZlGejF_oir6NO6ymgqjDrzDxiCAuP6-1qtwRvhhlQ1PQgrFWbFob_Us20pJJr_SaGRrFTHOzXdqti2A9HLEHWDeDKaX4-HUUjyeMlmBPSVbw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc4OeWFSDbHmuKreq6k5hp1s9eqpWJFCWbp7Nb8xJpixZhT5NV1o6q18xovoIanAfGtsr2rBpKD-tItw-aBy-gEqVEP4yCkFxfdXmIXtKLhNVrK5LnD7iyKiOQh14xs-B0cIOqJKA?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVpBqfLNPdDQoF5uOjiWhPjS6vt1sQSGSjCTbKQUpPNUlQoE6zFphcpTlX0-U9CVFTe_4GoytvOGF3I6a0TkfDwHsXMjOqhgJVKEqGNsNP2SFoBs5F800EC2mwPHmr-wW7q6JVpQ?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeyWVghcDxdHtRps-WwZadQLqAyFmlTQ0zzxerzb_YTE1XTFdy5oscDI7Dq0PZdnLLTjS6tZhoxplGZFWXTCmuDJ07oMFo4aapeZ33oSIJ8HFPz1OGkdOxV-aeaSLfasZaJ_m1FPg?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcHuaC8FlYi2CadS9Z2u4aYgCfcmGQGKGq8d7cg1wS14f3K0J2MAw6gUBfFrs7K7zT280CU68oyWetdNp8A1el1hEypJeW3tXb_e3SslNaNIcp9Yq2I0nfU3dgftDsCm5pars6R3A?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd0MiwbM1eE_oou3zeEmALfhAl0ggN7Fdfm7aeDYxiRIA24aXhK6Qx_VPYgk0ZcB0rKVIx-IAUO9fL8fVi4M_hwWi8oHhL3yH1e9V-xgBmISnYH29XfEzOr0seOCXK2c_Rm4m6oNw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfF2eymX--DFxF2jKIgWocw69nVsh-_5zusNyhyP6BjxdkVHbaQ1rtw_WRNEZdEVAN0mjSwcprtCBG8_Max2lphJy7RszgMthaPqZ7YB0ghayjCdqPeixGzF1vIhHYxVfyWHV9D?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

7.12 – 7.13 **Bloco “Fim”** (este bloco finaliza a execução do script ou retorna o diagrama do subprocesso ao processo principal).

8. **Bloco “Adicionar linha”** permite adicionar uma linha à tabela de dados. Para este bloco, as seguintes propriedades são especificadas:

* Table/Tabela (tabela de dados à qual a linha será adicionada);
* Values/Valores (lista de valores da nova linha).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfv0TCsH6xbGWuXLeJjb766S-aoQy-ObGTI6qFS_mFir5z_7OfIP9N-5QPfs1DvXcYGQzLa0pA8rDn1vR3cdYeXtNoaPb-9D-Hzl8cOJx8Xct7AXY1jmiEXPgTD9JA1C_GufDAuew?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

9. **Bloco “Log”** permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô o ID do cliente e sua mensagem de texto. No Orquestrador, esta mensagem do robô será marcada como “Info”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcnbZvgJYcD-j423o1XeXgzB84bZ4x-O6TsLJTDzMB_uTc-FVQbZKRKMN2ObQuE-MW-lQGtFgfjTeAaNB-wkKgYyLPNCNiD342W4MNuKUzm5reaoTLZAfzQjE0a3ofx6trvah_DTw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

10. **Bloco “Solicitação ao ChatGPT”** permite enviar solicitações para novos modelos generativos da Open AI, começando pelo ChatGPT. Com ele, você pode criar novos textos sob demanda, realizar diversas tarefas de classificação, sumarização, tradução e reescrita de textos, escrever protótipos de código em diferentes linguagens de programação, analisar dados semiestruturados e não estruturados, extrair e processar fatos, manter diálogos sobre diversos temas, e muito mais. O pagamento pelo uso desta funcionalidade é descontado da conta do cliente na plataforma. Para fins de teste, cada novo usuário tem a oportunidade de testar esta funcionalidade sem custo. Após a conclusão do desenvolvimento do robô, o uso desta funcionalidade requer pagamento. Para este bloco, as seguintes propriedades são especificadas:

* Histórico de chat (histórico de chat, com base no contexto do qual a rede neural deve gerar uma resposta);
* Modelo (modelo para geração de resposta);
* Temperatura (número decimal entre 0 e 1, que indica o grau de "aleatoriedade" ou "criatividade" do resultado, onde 0 é o resultado menos criativo e 1 é o mais aleatório);
* Comprimento máximo (comprimento máximo do resultado, expresso em tokens condicionais);
* Auto-restrição de comprimento (flag estabelecido que ativa a autocorreção do comprimento máximo do resultado);
* Timeout (tempo máximo de espera pela resposta em segundos).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcAdZF0udqVwnKIOiQDwPufqDI3m1T3b6Oyl7bFlKvnDryaQf8lEGbQwWToTI_iHbvPpStcyBdhVwTcILfq9iVm-PKGdnQECTinbUzLzi_vHwdx8qfNZC3vfJFATUuO9oxm24j5tQ?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

11. **Bloco “Adicionar linha”** permite adicionar uma linha à tabela de dados. Para este bloco, as seguintes propriedades são especificadas:

* Table/Tabela (tabela de dados à qual a linha será adicionada);
* Values/Valores (lista de valores da nova linha).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdytFio-sRVjo_erlWU46qjyY_0yHan6fTyC78RkwXLSd-7XBmorM0TnvHDVWWHGbIbIiT8sXthf91HZ1m8JqFHxqhVNifXXeJLwTtqeB6Xqy4x8X3swq4Yv8M6ON31klt2Fjo2kA?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

12. **Bloco “Log”** permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô o ID do cliente e a resposta à sua solicitação. No Orquestrador, esta mensagem do robô será marcada como “Info”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcFLQvCnGC2Xc7BCopmj_5ZLeURZeFlrwyoJfItOuRO8QX6LmD9V7eHdPDDXlEuIIs9mVRmgh9k6VFgLjYtuanVCRxh9g5LB4rCbMpE8TfkS9uShzOEqrw1dp_RtvCokQV6KakT?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

13. **Bloco “Bot. Enviar mensagem”** permite enviar uma mensagem de texto no chat. Para este bloco, as seguintes propriedades são especificadas:

* Conexão (objeto de conexão ao bot. O nome da variável nesta propriedade deve coincidir com o nome da variável na propriedade "Conexão", do bloco "Bot. Criar conexão" do grupo Telegram, que foi anteriormente usado para conectar ao bot Telegram);
* ID do chat (Id do chat. Este valor é obtido do bloco "Bot. Receber mensagem" na propriedade "Mensagem");
* ID da mensagem (ID da mensagem à qual se deseja responder. Este valor pode ser obtido do bloco "Bot. Receber mensagem" na propriedade "Mensagem");
* Texto (texto da mensagem).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeYiBSnuQ48GM5BhygrlHhnubxPvEyxNgn5XfaI4OqAHYCipbN_EZNWZhohtk0fsFnADE9BGO2CdsLwaUS4loFbkJPeErlzjqLjsJ8UEJUSFymDKIano3gn5WIoY6JS-tr47CLgHA?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

14. **Bloco “Salvar em CSV”** permite salvar a tabela de dados em um documento CSV. Para este bloco, as seguintes propriedades são especificadas:

* Tabela de Dados (tabela de dados que deve ser salva no documento);
* Caminho para o arquivo (caminho para o documento onde a Tabela de Dados deve ser salva);
* Delimitador (símbolo delimitador, por padrão é utilizado ponto e vírgula);
* Codificação (codificação do arquivo);
* Gravar cabeçalhos (flag estabelecido que ativa a gravação dos cabeçalhos da tabela).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfusssfET3ZJAWVtjwh4Pk6xwmjba2lk58XjZB-xY6aKBW_UmP5aDBaT-tW7Muofsk3-DmruGqb7SKR7ePKRMqlnbOxXfP1rAtAfs3KEb7dZ_s_qiePH5JbafY_vh7NTqd9KyGf?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

15. **Bloco “Pausa”** suspende a execução do script por um tempo determinado. Para este bloco, as seguintes propriedades são especificadas:

* Unidade de medida (unidade de medida na qual a duração da pausa é especificada);
* Duração (valor do intervalo de tempo nas unidades de medida especificadas).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfGH70q75WMcjk-El3mASVpobEnCybyjMOjUZvgcjj_RJZ_775iooNgHXDO_A8LX_0F4nu_MiAHyXgLTxUWlMU8U_gfJEJSh8rdYJM7t0yLFHb9yLKCWIqsMTz2CSX0DJSMOu4lWw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

16. **Bloco “Requer parada”** verifica a necessidade de parar o script.

Para este bloco, na saída, na linha “Resultado” é indicada a variável $NeedStop.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeD_luRdNC9UDBefCruJCcEYCxpEPwoDqG2c3vNKV7KA_vkb6r2UtVgRnMN3z8-YLW6sPMWyL7ERkqGU8YNQHov_vDrB2N4imB96spDYOV4PaoPX9VGO57tUchUPgrVp_xZOoo5Dw?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

17. **Bloco “Fim”** (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).

**Diagrama “Configurações”**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdVPg8TXf4vtfEkSmiPnvIuUukdDKNgQ0O__2KWTzP7zJCx9kkq6jAoA3_fc3diEYgxtxBAJhRlpjPVYzpJxCT7FQ6FQ2-k6wMC8eYO2Phba0HAaX2TO0Ccs1j-64IkICSXuZtSTA?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

1. **Bloco “Início”** (a partir deste bloco começa qualquer diagrama).
2. **Bloco “Unir caminho”** une linhas em um caminho. Para este bloco, a propriedade “Caminho inicial” está especificada.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfpjvRoB_fTRiLI27kGV-FlCUJ6eMQoaAa24SSFzCX9_6_YK0blX-Kt64w1X3KAvZZBm1FLqXcCO3lMNMN4JE6VZoa778al2eUmFwH5azVZL9adRildrCuUEd5Q9KowtscDaKQLGA?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

3. **Bloco “Criar pasta”** permite criar uma nova pasta. Para este bloco, a propriedade “Nome da pasta” (nome completo da nova pasta) está especificada.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe57Rlg1zlsTyMKK08K9iwpILU9VL6_edKlGZjrAsbrwr9rDwKoLPH0wbVRVHU2QDI-N4oQ3c_6edACVDracJodfi5QT3H8kjZEB3D0acQvd1at7b5yYWMc9xwtN2fQBktXzAxh2Q?key=31TfmOJqwnG_FrKp-kM5Dugx" alt=""><figcaption></figcaption></figure>

4. **Bloco “Fim”** (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-designer/primery-robotov/telegram-multi-user-bot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
