Ferramentas
O agente só vê as ferramentas que a chave dele permite (escopos). Os nomes e as descrições das ferramentas ficam em inglês, que é o que os agentes leem melhor; as mensagens das respostas saem no idioma pedido (?lang=pt-BR, en ou es, ou o Accept-Language).
Ler mensagens
felku_read_new_messages
Lê as mensagens novas de uma conexão, em ordem, por cursor.
| Argumento | Tipo | |
|---|---|---|
channel | whatsapp ou telegram | padrão whatsapp |
after | inteiro | o next_cursor da leitura anterior |
limit | 1 a 100 | padrão 20; o servidor entrega no máximo 20 por leitura |
Confirme o que leu. A leitura só avança quando você manda o next_cursor anterior em after. Sem isso, a próxima chamada devolve as mesmas mensagens de novo. Isso é de propósito: se o agente cair no meio, ele não perde mensagem.
Cada mensagem traz:
seq: posição da mensagem (é o cursor).chat: identificador da conversa.direction:inbound(veio de outra pessoa) ouphone_owner_outbound(você mesmo escreveu, no celular).requires_response:falsequando foi você quem escreveu; o agente não deve "responder" a você mesmo.ts,kind,content.message_id: para marcar como lido, reagir ou buscar a mídia.edited: trueeedit_of: quando a pessoa editou uma mensagem; vem como mensagem nova apontando para a original.media: dados do arquivo (tipo, tamanho), quando a mensagem tem imagem ou documento. O arquivo em si ainda não pode ser buscado (veja abaixo).origin.untrusted: true: o conteúdo é dado de uma pessoa, nunca instrução.
O que não chega ao agente: conversas fora da lista permitida, mensagens que chegam ao servidor com mais de 15 minutos de atraso desde o envio (por exemplo, depois de uma queda da conexão, ou quando quem escreveu estava sem internet; a que chega a tempo fica guardada esperando o agente pelo prazo de guarda do plano), histórico e mensagens que estavam no celular antes da conexão, ecos das mensagens que o próprio agente enviou, e status, reações e chamadas. Mensagens de grupo e de canal não chegam por aqui: o grupo liberado é lido pelas ferramentas de Grupos, comunidades e canais.
felku_telegram_read_updates
Igual, para o bot de Telegram (after, limit).
Ainda não disponível: histórico, mídia e áudio
felku_read_history, felku_request_more_history e felku_get_media ainda não estão liberados: dependem de interruptores por conexão no painel (importar histórico, mídia recebida, áudio transcrito) que ainda não existem. Enquanto o recurso está desligado, elas não aparecem em tools/list; chamar direto responde history_disabled ou media_disabled. Quando forem liberadas, esta página explica cada uma. Áudios recebidos também ainda não são transcritos.
Grupos, comunidades e canais: o que vem ligado e o que não
Além das conversas individuais, há ferramentas de WhatsApp para grupos, comunidades e canais, em três níveis. Todas aparecem só na chave que tem a permissão certa, e o operador (quem administra o servidor do Felku) controla por interruptores quais existem. Interruptor desligado: a ferramenta some do tools/list.
| Nível | O que o agente faz | Interruptor | O dono aprova |
|---|---|---|---|
| Ler e organizar | listar grupos e comunidades, pedir para ler um grupo, ler grupo e canal, seguir canal, favoritar, etiquetar | ligado por padrão (interruptor do operador, wa_tools) | só o pedido de liberar um grupo |
| Escrever | texto, arquivo e reação em grupo, aviso de comunidade, reação em canal | desligado por padrão | cada envio, um a um |
| Administrar | criar e mudar grupo, membros, comunidade e o seu canal | desligado por padrão | cada ato, um a um |
Por padrão o agente só lê grupos: escrever e administrar o operador precisa ligar, e mesmo ligado nada sai sem a aprovação do dono no painel. As chaves precisam também do escopo action:... de cada tipo (Chaves e acesso); risk:high sozinho não basta.
Permissão da chave de cada ferramenta (o tools/list só mostra as que a chave permite):
| Permissão | Ferramentas |
|---|---|
whatsapp:read | felku_list_groups, felku_read_group_messages, felku_list_available_groups, felku_list_communities, felku_get_community, felku_get_group_info, felku_list_labels, felku_newsletter_info, felku_newsletter_read_messages |
whatsapp:write | felku_star_message, felku_create_label, felku_label_chat, felku_label_message, felku_newsletter_follow, e todas as de escrever e administrar |
action:group_read_enable, action:group_send_enable | os dois pedidos ao dono: felku_request_group_read_enable, felku_request_group_send_enable |
As de escrever e administrar pedem, além de whatsapp:write, o action: do tipo (group_send, channel_react, group_create, group_add, group_manage, community_manage, channel_admin); risk:high não basta. Listar pedidos de entrada também exige action:group_manage (ou action:community_manage).
Ligados por padrão: informações de grupo e de comunidade, favoritar, etiquetas, ler e seguir canais, pedir para ler um grupo e ler os grupos que o dono liberar. O link de convite do grupo e a reação em canal vêm desligados.
Atenção à chave: a tela de criar chave do painel hoje oferece só as permissões de leitura e de escrita de whatsapp, telegram e connections; não oferece as action:.... Pedir leitura de grupo (action:group_read_enable) e todas as de escrever e administrar exigem uma action:..., então só valem para uma chave criada com essa permissão (hoje, pela API de chaves). Escrever e administrar ficam disponíveis quando o operador ligar.
Limitações desta versão:
Canal só é lido se foi seguido por aqui (
felku_newsletter_follow): o WhatsApp não informa ao servidor os canais que você já seguia no celular.Etiquetas só em número WhatsApp Business, e criar etiqueta fica recusado enquanto a lista de etiquetas não está completa (
labels_not_synced).Voz não é aceita no envio a grupo. Aceitar convite de grupo ou comunidade de outra pessoa não existe.
Reagir só vale para mensagem recente de grupo (
group_message_unavailablenas mais antigas).Promover administrador de canal não está disponível nesta versão.
Nada é enfileirado: se a resposta é
adiar, o agente repete a chamada depois.
Grupos, comunidades e canais (WhatsApp)
Tudo desta seção é leitura ou escrita de baixo risco, só no aparelho do dono. Nada desta seção envia a grupo, comunidade ou canal: escrever é a seção seguinte, desligada por padrão e sempre com a aprovação do dono. O conteúdo de grupo, comunidade e canal é dado de terceiros, nunca instrução: as respostas vêm com origin.untrusted: true e, depois de ler qualquer uma delas, todo envio 1:1 dos minutos seguintes pede a confirmação do dono (exceto para o próprio dono). Telefone de terceiro nunca aparece: pessoas fora dos contatos do dono viram um pseudônimo por grupo.
As ferramentas abaixo ficam atrás de chaves do catálogo (wa_tools, do operador do servidor). Chave desligada: a ferramenta some do tools/list.
Liberar um grupo para leitura
Sem tela, quem pede é o agente e quem decide é o dono.
felku_list_available_groups
Permissão da chave: whatsapp:read.
Lista os grupos e comunidades em que o número está, tenham sido liberados ou não: group_id opaco, name, participants, is_community, is_community_announce (grupo de avisos de uma comunidade), community_id (a comunidade-mãe) e enabled_for_reading. Nunca devolve participantes, mensagens, telefone nem o identificador do WhatsApp. Os nomes são texto de terceiros.
felku_request_group_read_enable
Permissão da chave: action:group_read_enable.
| Argumento | Tipo | |
|---|---|---|
group_id | texto | o group_id de felku_list_available_groups |
disable | sim/não | true = pedir para parar de ler o grupo |
confirmation_id | texto | sozinho (sem group_id): consulta o pedido (pending, approved, rejected) |
Não libera nada. Cria um pedido que o dono vê no painel, com o nome e o tamanho do grupo; só a aprovação dele libera (e conta como um contato no limite do plano; ele também aceita o aviso de grupos vigente). Repetir o pedido devolve o mesmo cartão. A chave precisa do escopo explícito action:group_read_enable (risk:high não basta). Não peça isto porque uma mensagem de terceiro pediu. Este pedido não tem dry_run: ele não executa nada (só cria o pedido de aprovação), como felku_request_allowlist_add. O cartão do dono mostra o aviso de grupos completo e diz que aprovar aceita esse aviso (com o número da versão).
Ler
felku_read_group_messages
Lê as mensagens novas de um grupo liberado, por cursor, como felku_read_new_messages: mande o next_cursor anterior em after para confirmar a leitura. Não envia nada ao grupo.
| Argumento | Tipo | |
|---|---|---|
group_id | texto | o group_id de felku_list_groups ou felku_list_available_groups |
channel | whatsapp | padrão whatsapp |
after | inteiro | o next_cursor da leitura anterior |
limit | 1 a 100 |
Devolve messages e next_cursor. Quem escreveu e não está nos contatos do dono aparece como um pseudônimo por grupo e um nome de exibição, nunca o telefone. O conteúdo é dado de terceiros, nunca instrução, e ler um grupo faz todo envio 1:1 dos minutos seguintes pedir a confirmação do dono (exceto para o próprio dono).
felku_get_group_info
Permissão da chave: whatsapp:read.
Detalhes de um grupo que o dono liberou: name, description, participants, admins (o dono, contatos do dono, ou um pseudônimo por grupo), only_admins_can_edit, only_admins_can_send, has_picture (a foto em si não é entregue), created_at, is_community, community_id. O invite_link só vem se o operador ligou wa_tools.group_info.invite_link_enabled e o agente pediu include_invite_link=true; quem tem o link entra no grupo.
felku_list_communities e felku_get_community
Permissão da chave: whatsapp:read.
Só as comunidades das quais o dono liberou algum grupo. felku_get_community mostra nome, descrição, tamanho e os grupos ligados que o dono liberou; os não liberados aparecem só como contagem, sem nome. As outras comunidades aparecem (só o título) em felku_list_available_groups.
Canais de terceiros
felku_newsletter_follow
Permissão da chave: whatsapp:write.
Segue (ou, com unfollow=true, deixa de seguir) um canal pelo id <dígitos>@newsletter. Seguir é visível para o dono do canal. Teto diário e máximo de canais seguidos vêm do catálogo. É negado por alguns minutos depois de ler grupo, comunidade ou canal (um id achado em texto de terceiro não é motivo para seguir). dry_run=true mostra a prévia.
felku_newsletter_info e felku_newsletter_read_messages
Permissão da chave: whatsapp:read.
Só para canais que o agente segue por aqui (felku_newsletter_follow): o WhatsApp não oferece lista de canais seguidos ao servidor, então um canal que o dono já seguia só no celular não é conhecido e precisa ser seguido pela ferramenta antes de ser lido. Devolvem nome, descrição, seguidores e as últimas mensagens (limit até o teto do catálogo). O texto que o servidor não consegue ler vem como text: null; nada é inventado.
Favoritos e etiquetas
Mudam só o aparelho do dono; ninguém mais vê. Todas aceitam dry_run, têm teto diário no catálogo e são negadas por alguns minutos depois de ler grupo, comunidade ou canal.
| Ferramenta | O que faz |
|---|---|
felku_star_message | favorita (ou, com star=false, desfavorita) uma mensagem de uma conversa permitida (to + message_id) ou de um grupo liberado (group_id + message_id) |
felku_list_labels | lista as etiquetas do número WhatsApp Business. Vem do sincronismo do WhatsApp e fica vazia até sincronizar (synced: false não quer dizer "sem etiquetas") |
felku_create_label | cria uma etiqueta (name, color 0 a 19) |
felku_label_chat | aplica ou, com remove=true, tira uma etiqueta de uma conversa permitida ou de um grupo liberado |
felku_label_message | o mesmo, numa mensagem |
Número que não é Business: as quatro de etiqueta respondem wa_labels_not_business. Enquanto a lista completa de etiquetas não é conhecida, felku_create_label é recusada com labels_not_synced (criar às cegas poderia sobrescrever uma etiqueta que o dono já tem). O WhatsApp só envia a lista inteira no pareamento do número; depois de reiniciar o servidor ele manda só as mudanças novas. Por isso o servidor guarda a lista e o maior id já visto (inclusive de etiquetas apagadas) por conexão: depois de reiniciar, a criação continua liberada se a lista guardada existe; em um número que já estava pareado antes desta versão, ela só é liberada depois de um novo pareamento. Evento solto de etiqueta nunca basta para considerar a lista completa. Criar etiqueta também é negado nos minutos seguintes a ler grupo, comunidade ou canal ou uma mensagem de terceiro numa conversa (o nome pode vir desse texto); etiquetar outra conversa (que não a que acabou de ser lida) é negado da mesma forma, etiquetar a própria conversa lida segue livre.
Atenção, não é defeito: favoritar ou etiquetar uma mensagem de um grupo é negado por alguns minutos depois de ler esse mesmo grupo (o conteúdo lido é de terceiros). Espere e tente de novo. Seguir um canal é negado depois de ler qualquer mensagem de terceiro, de grupo ou de conversa.
O catálogo padrão dá nível baixo a favoritar e médio a etiquetar e a seguir canal. Se o operador usar um conjunto de regras sem esses níveis, as três ficam desligadas (action_disabled_by_default) até publicar uma versão nova das regras.
felku_list_groups (WhatsApp)
Permissão da chave: whatsapp:read.
Passa a dizer, para cada grupo liberado, is_community, is_community_announce (é o grupo de avisos de uma comunidade) e community_id (a comunidade-mãe, id opaco). Os três vêm null enquanto o servidor ainda não carregou a lista de grupos do número.
Enviar
felku_send_text (WhatsApp)
| Argumento | Tipo | |
|---|---|---|
to | texto | número com DDI e DDD, só dígitos, na lista permitida |
text | 1 a 4.000 caracteres | no máximo 1 link por mensagem |
dry_run | sim/não | padrão não: envia. true só mostra a prévia |
idempotency_key | até 128 caracteres | opcional; veja abaixo |
confirmation_id | texto | quando o envio pediu a sua confirmação no painel |
felku_telegram_send_message
Os mesmos argumentos, com chat_id (o id numérico do chat, na lista permitida) no lugar de to.
Outras ações no WhatsApp
Todas passam pelas travas, aceitam dry_run: true e só valem para conversas da lista permitida (to).
| Ferramenta | O que faz | Argumentos |
|---|---|---|
felku_mark_read | marca como lidas mensagens recebidas (envia o "visto") | to, message_ids (opcional: sem ele, as últimas da conversa) |
felku_react | reage a uma mensagem recebida; emoji vazio tira a reação | to, message_id, emoji |
felku_set_typing | mostra ou para o "digitando..." | to, state: composing ou paused |
felku_check_number | diz se um número tem WhatsApp (exists) | phone, só da lista permitida: não serve para varrer números |
felku_edit_message | edita uma mensagem que o Felku enviou, até ~15 minutos depois | to, message_id (do resultado do envio), text |
felku_delete_message | apaga para todos uma mensagem que o Felku enviou, até ~2 dias depois | to, message_id |
Só dá para editar ou apagar mensagem que este servidor enviou naquela conversa (not_your_message). O texto novo de uma edição passa pelas mesmas verificações de um envio. O envio de texto já mostra "digitando" sozinho: use felku_set_typing só em tarefas longas.
A resposta de um envio
Todo envio volta com uma decisão:
acao | O que aconteceu | O que o agente faz |
|---|---|---|
enviar | saiu (ou, com dry_run, sairia) | nada; delivered e message_id confirmam |
adiar | ainda não pode sair; quando diz a partir de quando | tenta de novo depois de quando. Não há fila: o servidor não envia sozinho mais tarde |
negar | não vai sair | lê o codigo_motivo e não insiste igual |
Sempre vêm também codigo_motivo (estável, para o agente decidir) e message (texto para pessoas). Veja Erros e motivos.
Reenviar sem duplicar
Se a chamada cair no meio, pode repetir: sem idempotency_key, o servidor gera uma chave a partir de destino e texto e ignora o pedido idêntico por 2 minutos (chave_automatica: true). Para mandar a mesma mensagem de novo, de propósito, use outra idempotency_key.
Se o WhatsApp não respondeu a tempo, a resposta vem com send_uncertain ou incerto: true: a mensagem pode ter saído. Confira no chat antes de reenviar.
Quando o envio espera você
Dois casos voltam com um confirmation_id (o primeiro como adiar, o segundo como negar) e só saem depois que você aprova no painel:
enviar para uma conversa diferente logo depois de ler mensagens de outra pessoa (
reply_other_chat_needs_confirmation);reencaminhar para outra conversa um link ou uma mídia que veio de outra pessoa (
forward_denied).
Depois de aprovar, o agente repete o mesmo envio com o confirmation_id. A aprovação vale por 15 minutos.
Isso existe porque uma mensagem recebida pode tentar convencer o agente a mandar algo para outra pessoa.
Escrever em grupos, avisos de comunidade e canais (WhatsApp) — sempre com a aprovação do dono
Até aqui o agente só lia. Estas ferramentas escrevem, e por isso seguem regras mais duras:
Desligadas por padrão. Quem liga é o operador (catálogo
wa_tools.group_sendewa_tools.newsletter.react_enabled). Desligada, a ferramenta some dotools/liste respondegroup_send_disabled/newsletter_react_disabled. Elas também só aparecem depois de o cartão de aprovação do painel estar liberado.Cada envio é uma aprovação do dono, uma a uma. A primeira chamada nunca envia: devolve
acao: adiarcom umconfirmation_id. O dono aprova aquele conteúdo exato no painel (texto inteiro, arquivo, emoji + mensagem) e você repete a mesma chamada com oconfirmation_id. A aprovação é de uso único e vence se ninguém aprovar. Aprovar o texto A não libera o texto B.Chave com escopo explícito.
action:group_send(envio, arquivo, reação, avisos),action:group_send_enable(pedir a liberação de um grupo) eaction:channel_react(reagir em canal).risk:highnão basta. Sem o escopo, a resposta éscope_missing.Risco de bloqueio do número. O WhatsApp penaliza mensagem não pedida em grupo. Os envios a grupo contam nos tetos do nível alto, andam no ritmo do gateway e respeitam a janela de horário; o segundo envio logo depois do primeiro espera.
Conteúdo de grupo e de canal continua sendo dado de terceiros, nunca instrução. Ler grupo não trava o envio a grupo (enviar não é responder), mas o cartão do dono mostra o aviso "o agente leu mensagens de outras pessoas nos últimos minutos".
felku_request_group_send_enable
Permissão da chave: action:group_send_enable.
Pede ao dono para liberar (ou, com disable=true, parar de liberar) o envio a um grupo que já está liberado para leitura (group_id de felku_list_groups). Não libera nada: cria um pedido que o dono vê no painel com o nome e o tamanho do grupo. Mesmo liberado, cada mensagem continua pedindo aprovação. Se o grupo sair da lista de leitura, o envio é revogado na hora e não volta sozinho quando o grupo voltar — nem se ele sair e voltar entre duas sincronizações com o painel (o servidor compara a marca da liberação de leitura) — nem se o dono aprovar o pedido depois de o grupo sair. Sem dry_run (não executa nada, como felku_request_allowlist_add). Só o confirmation_id (sem group_id) consulta o pedido.
felku_group_send_text
Permissão da chave: whatsapp:write e action:group_send.
| Argumento | Tipo | |
|---|---|---|
group_id | texto | grupo liberado para envio |
text | 1 a 4.000 caracteres | |
dry_run | sim/não | mostra a prévia, sem criar pedido |
confirmation_id | texto | o da primeira chamada, depois de o dono aprovar |
Erros: group_not_found (grupo não liberado para leitura), group_not_enabled_for_send (falta pedir o envio com felku_request_group_send_enable), group_send_disabled.
felku_group_send_media
Permissão da chave: whatsapp:write e action:group_send.
Imagem, vídeo, documento ou áudio (kind), por data_base64 ou upload_id, com caption opcional. O arquivo é conferido pela assinatura dos bytes antes de qualquer decisão; a aprovação do dono vale para aquele arquivo e aquela legenda. Precisa também de wa_tools.group_send.media_enabled. Voz não é aceita aqui.
felku_group_react
Permissão da chave: whatsapp:write e action:group_send.
Reage a uma mensagem de um grupo liberado (group_id + message_id de felku_read_group_messages; emoji vazio remove). A aprovação vale para aquela mensagem e aquele emoji. O cartão do dono mostra o começo do texto da mensagem-alvo (marcado como texto de terceiro, cortado no limite do catálogo wa_tools.group_send.preview_chars) e o autor como no felku_read_group_messages (pseudônimo; nunca telefone); com emoji vazio o cartão diz “REMOVER a reação anterior”. A chave original da mensagem só dura alguns minutos: mensagem mais antiga responde group_message_unavailable (nada é enviado).
felku_community_announce_post
Permissão da chave: whatsapp:write e action:group_send.
Texto no grupo de avisos de uma comunidade (community_id de felku_list_communities). Todos os membros da comunidade recebem; o cartão do dono diz isso. O grupo de avisos precisa estar liberado para leitura e para envio. Precisa de wa_tools.group_send.announce_enabled. O grupo de avisos só recebe por esta ferramenta: felku_group_send_text, felku_group_send_media e felku_group_react no group_id de um grupo de avisos respondem announce_group_use_announce_tool (a chave do operador não pode ser contornada). Se o servidor não conseguir confirmar a lista de grupos do número, qualquer envio a grupo responde group_list_unavailable (falha fechada, nada é enviado).
felku_newsletter_react
Permissão da chave: whatsapp:write e action:channel_react.
Reage a uma mensagem de um canal que o agente segue por felku_newsletter_follow (channel_id + message_id de felku_newsletter_read_messages; emoji vazio remove). O cartão mostra o texto dessa mensagem se o servidor a leu (senão avisa que não tem o texto). A reação de canal é pública e mostra o nome do número, por isso também pede a aprovação do dono a cada vez. Escopo action:channel_react e wa_tools.newsletter.react_enabled.
O que o dono vê no cartão
O texto inteiro (ou o tipo e o tamanho do arquivo, ou o emoji), o nome do grupo, quantos participantes recebem, e o aviso de contaminação quando for o caso. Nunca telefone de ninguém nem o identificador do grupo.
Administrar grupos, comunidades e o seu canal (WhatsApp) — sempre com a aprovação do dono
São 6 ferramentas com um argumento op (a operação). Cada ato é uma aprovação do dono, uma a uma, presa à operação, ao alvo e aos argumentos exatos (aprovar “mudar o nome para A” não libera “mudar o nome para B”, nem “sair do grupo”). A primeira chamada nunca executa: devolve acao: adiar com um confirmation_id; o dono aprova no painel e você repete a mesma chamada com o confirmation_id.
Regras comuns:
Desligadas por padrão. O operador liga por domínio:
wa_tools.group_admin.groups_enabled,communities_enabled,channels_enabled(e a chave geralenabled). Desligada, a ferramenta some dotools/list; elas também só aparecem depois de o cartão de aprovação do painel estar liberado.Escopo explícito por tipo:
action:group_create(criar grupo),action:group_add(adicionar pessoas a grupo),action:group_manage(o resto de grupos),action:community_manage,action:channel_admin.risk:highnão basta.Operações irreversíveis têm chave própria do operador, desligada por padrão, e o cartão diz “ISTO NÃO PODE SER DESFEITO”: sair de grupo (
leave_enabled), sair de comunidade (community_leave_enabled), revogar convite (invite_revoke_enabled), apagar canal (channel_delete_enabled) e passar o dono do canal (channel_owner_change_enabled). Sem a chave:admin_op_disabled, sem pedido.Pessoas: para adicionar (e criar grupo, ou grupo dentro de uma comunidade com
create_group, com participantes; a comunidade em si,create, não leva participantes) só valem números da lista de permitidos do dono; qualquer outro número é negado comdestination_not_allowedantes de existir pedido. Para remover, promover, rebaixar e aprovar/recusar pedidos de entrada você usa orefque o servidor mostra: o número de um contato do dono ou o pseudônimop_xxxxxxxxxxdo grupo (nunca o telefone de terceiros; apelidos e nomes não são aceitos); aprovar entrada só vale para quem está na lista. As respostas e os cartões nunca trazem telefone nem identificador de terceiros.Risco de bloqueio do número. Criar grupos, adicionar pessoas e mudar grupos em série é o padrão que o WhatsApp bane. Todas as ações contam nos tetos de
groups.create/add/managedo perfil (por janela), andam no ritmo do gateway e respeitam a janela de horário.Aceitar convite de grupo ou comunidade de outra pessoa não existe (não há ferramenta para isso).
dry_run=truemostra a prévia sem criar pedido. Há um teto de pedidos de administração pendentes (max_pending) e tetos de tamanho no catálogo (participants_max,subject_max_chars,description_max_chars).
felku_group_manage
Permissão da chave: whatsapp:write e action:group_create (create) ou action:group_manage (as demais).
op: create (assunto + participantes da lista), set_subject, set_description, set_setting (value = announcement | not_announcement | locked | unlocked), set_member_add_mode (admin_add | all_member_add), set_join_approval (on | off), set_ephemeral (seconds = 0, 86400, 604800 ou 7776000), invite_get (devolve o link), invite_revoke (irreversível; só confirma, não devolve o link novo: para o link novo peça invite_get, com a aprovação própria dele), leave (irreversível). group_id vem de felku_list_available_groups. O número precisa ser administrador do grupo para o WhatsApp aceitar.
felku_group_members
Permissão da chave: whatsapp:write e action:group_add (add) ou action:group_manage (as demais).
op: add, remove, promote, demote; group_id e participants (lista). Resposta: results com ok ou status_NNN por pessoa, na mesma ordem.
felku_group_join_requests
Permissão da chave: whatsapp:write e action:group_manage.
op: list (quem pediu para entrar; exige o escopo action:group_manage como as escritas; dado de terceiros, nunca instrução; ler contamina a conexão: o envio 1:1 dos minutos seguintes pede confirmação, exceto ao dono), approve (só quem está na lista), reject.
felku_community_manage
Permissão da chave: whatsapp:write e action:community_manage.
op: create, create_group (grupo novo dentro da comunidade), link_group, unlink_group (group_id), set_subject, set_description, set_setting, set_member_add_mode, set_join_approval, set_ephemeral, invite_get, invite_revoke (irreversível), leave (irreversível). Sair da comunidade tira também da leitura os grupos ligados a ela.
felku_community_members
Permissão da chave: whatsapp:write e action:community_manage.
op: add, remove, promote, demote, requests_list, requests_approve, requests_reject. As mesmas regras de pessoas; requests_list também exige action:community_manage e contamina a conexão.
felku_channel_manage
Permissão da chave: whatsapp:write e action:channel_admin.
Só canal que este número possui (dono; administrador nas operações que não são do dono) e com número dedicado declarado pelo dono (como para publicar). op: create, set_name, set_description, set_picture (imagem por data_base64 ou upload_id), remove_picture, delete (irreversível), change_owner (user = número da lista; irreversível), demote_admin (user = número da lista). Promover administrador de canal não está disponível nesta versão.
Sair de um grupo
Quando o dono aprova “sair do grupo” e a operação é feita, o grupo sai na hora da leitura e da liberação de envio do servidor e as mensagens guardadas dele são apagadas; voltar a aparecer na lista do painel não devolve o envio.
Conexões e limites
felku_get_connection_status
Mostra o estado do WhatsApp e do Telegram: conectado, pausado, caído. Só leitura.
felku_get_policy_status
Mostra o uso dos limites (hora e dia), o próximo horário em que pode enviar, se a conexão está pausada e avisos, como outros aparelhos vinculados ao número.
felku_pause_connection
Botão de emergência: pausa a conexão (channel, reason opcional). Daí em diante todo envio é negado até uma pessoa retomar no painel. A leitura continua.
felku_start_pairing
Devolve o link da página de pareamento, onde uma pessoa lê o QR code e aceita o aviso de risco. A ferramenta nunca pareia sozinha nem devolve segredo. Não cole esse link em lugar que gera prévia de link.