Skip to content

feat(methods): add chat.postMessage example - #48

Draft
zimeg wants to merge 9 commits into
mainfrom
methods-typecheck-only
Draft

feat(methods): add chat.postMessage example#48
zimeg wants to merge 9 commits into
mainfrom
methods-typecheck-only

Conversation

@zimeg

@zimeg zimeg commented Jul 14, 2026

Copy link
Copy Markdown
Member

Summary

Adds a methods/ chat.postMessage example to the Bolt for Java examples — the first entry in a new methods/ showcase of individual Slack Web API method calls with slack-api-client.

  • src/main/java/chat/ChatPostMessage.java reads a token from the environment, initializes a MethodsClient, builds a ChatPostMessageRequest, and calls chatPostMessage directly in main.
  • The example ships a manifest.json requesting only chat:write.
  • methods/README.md documents the family and links the implementation; the top-level README lists the new showcase.

The example is validated in CI by compilation and Spotless (Palantir) formatting — the strongly-typed ChatPostMessageRequest builder catches wrong or misspelled arguments at compile time.

Testing

From methods/:

export SLACK_TOKEN="xoxb-..."
slack install --environment local
mvn compile exec:java -Dexec.mainClass=chat.ChatPostMessage

Confirm the message posts to the configured channel.


Supersedes the runtime-test / MockWebServer exploration in #47 (closed).

Co-Authored-By: Claude svc-devxp-claude@slack-corp.com

zimeg and others added 4 commits July 14, 2026 16:45
Add a methods/ chat.postMessage example verified by compilation alone,
with no MockWebServer test. Because chatPostMessage and its request
builder are strongly typed, javac catches wrong or misspelled arguments
(e.g. .chnnel(...) -> cannot find symbol) at compile time without a mock
server.

This is an alternative to the MockWebServer runtime-test approach for
side-by-side comparison.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Add the methods example module to the CI matrix. The compile-only example
has no test class; `mvn test` compiles it and runs zero tests, so CI
verifies it builds and passes spotless.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Match the runtime branch: add a chat manifest.json requesting only
chat:write, move the scope out of the README into the manifest, and use the
method's exact docs description.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
zimeg added 4 commits August 11, 2026 20:34
Mirror the bolt-js-examples methods README: tighten the intro, add a
'Making a request' walkthrough, and rename 'What's on display' to
'What's on call'. Keep the Maven layout and run command intact — the
walkthrough runs from the project root (cd methods) where 'mvn compile
exec:java' resolves.
The flexmark markdown formatter (spotless-maven-plugin) requires the
file to end with a blank line; the mirrored README ended on the content
line, failing 'spotless:check' in CI.
Flatten the example to mirror the bolt-js counterpart: perform the
call flow directly in main() rather than delegating to example01().
Java still requires the class and main shell, but the body now reads
top-to-bottom — read the token, initialize the client, call the
method. Drops the now-unused ChatPostMessageResponse import.
Match the methods entry to its README: 'An interface for querying
information from and enacting change in a Slack workspace' rather than
the outdated 'Individual Slack Web API method calls' phrasing.
@zimeg zimeg added new PR only - a new app is being introduced java Pull requests that update java code documentation Improvements or additions to documentation labels Aug 12, 2026
@zimeg zimeg self-assigned this Aug 12, 2026
@zimeg zimeg changed the title feat(methods): add chat.postMessage example (compile-only) feat(methods): add chat.postMessage example Aug 12, 2026
The example reads one variable (SLACK_TOKEN), so 'an environment
variable' is more accurate than the plural.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation java Pull requests that update java code new PR only - a new app is being introduced

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant