@@ -37,7 +37,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
3737< dl >
3838< dt id ="slack_bolt.context.say.say.Say "> < code class ="flex name class ">
3939< span > class < span class ="ident "> Say</ span > </ span >
40- < span > (</ span > < span > client: Optional[slack_sdk.web.client.WebClient], channel: Optional[str], thread_ts: Optional[str] = None, metadata: Union[Dict, slack_sdk.models.metadata.Metadata, ForwardRef(None)] = None)</ span >
40+ < span > (</ span > < span > client: Optional[slack_sdk.web.client.WebClient], channel: Optional[str], thread_ts: Optional[str] = None, metadata: Union[Dict, slack_sdk.models.metadata.Metadata, ForwardRef(None)] = None, build_metadata: Optional[Callable[[], Union[Dict, slack_sdk.models.metadata.Metadata, ForwardRef(None)]]] = None )</ span >
4141</ code > </ dt >
4242< dd >
4343< div class ="desc "> </ div >
@@ -50,18 +50,21 @@ <h2 class="section-title" id="header-classes">Classes</h2>
5050 channel: Optional[str]
5151 thread_ts: Optional[str]
5252 metadata: Optional[Union[Dict, Metadata]]
53+ build_metadata: Optional[Callable[[], Optional[Union[Dict, Metadata]]]]
5354
5455 def __init__(
5556 self,
5657 client: Optional[WebClient],
5758 channel: Optional[str],
5859 thread_ts: Optional[str] = None,
5960 metadata: Optional[Union[Dict, Metadata]] = None,
61+ build_metadata: Optional[Callable[[], Optional[Union[Dict, Metadata]]]] = None,
6062 ):
6163 self.client = client
6264 self.channel = channel
6365 self.thread_ts = thread_ts
6466 self.metadata = metadata
67+ self.build_metadata = build_metadata
6568
6669 def __call__(
6770 self,
@@ -87,6 +90,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>
8790 text_or_whole_response: Union[str, dict] = text
8891 if isinstance(text_or_whole_response, str):
8992 text = text_or_whole_response
93+ if metadata is None:
94+ metadata = self.build_metadata() if self.build_metadata is not None else self.metadata
9095 return self.client.chat_postMessage( # type: ignore[union-attr]
9196 channel=channel or self.channel, # type: ignore[arg-type]
9297 text=text,
@@ -103,7 +108,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
103108 mrkdwn=mrkdwn,
104109 link_names=link_names,
105110 parse=parse,
106- metadata=metadata or self.metadata ,
111+ metadata=metadata,
107112 **kwargs,
108113 )
109114 elif isinstance(text_or_whole_response, dict):
@@ -113,7 +118,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>
113118 if "thread_ts" not in message:
114119 message["thread_ts"] = thread_ts or self.thread_ts
115120 if "metadata" not in message:
116- message["metadata"] = metadata or self.metadata
121+ metadata = self.build_metadata() if self.build_metadata is not None else self.metadata
122+ message["metadata"] = metadata
117123 return self.client.chat_postMessage(**message) # type: ignore[union-attr]
118124 else:
119125 raise ValueError(f"The arg is unexpected type ({type(text_or_whole_response)})")
@@ -122,6 +128,10 @@ <h2 class="section-title" id="header-classes">Classes</h2>
122128</ details >
123129< h3 > Class variables</ h3 >
124130< dl >
131+ < dt id ="slack_bolt.context.say.say.Say.build_metadata "> < code class ="name "> var < span class ="ident "> build_metadata</ span > : Optional[Callable[[], Union[Dict, slack_sdk.models.metadata.Metadata, ForwardRef(None)]]]</ code > </ dt >
132+ < dd >
133+ < div class ="desc "> </ div >
134+ </ dd >
125135< dt id ="slack_bolt.context.say.say.Say.channel "> < code class ="name "> var < span class ="ident "> channel</ span > : Optional[str]</ code > </ dt >
126136< dd >
127137< div class ="desc "> </ div >
@@ -158,6 +168,7 @@ <h3>Class variables</h3>
158168< li >
159169< h4 > < code > < a title ="slack_bolt.context.say.say.Say " href ="#slack_bolt.context.say.say.Say "> Say</ a > </ code > </ h4 >
160170< ul class ="">
171+ < li > < code > < a title ="slack_bolt.context.say.say.Say.build_metadata " href ="#slack_bolt.context.say.say.Say.build_metadata "> build_metadata</ a > </ code > </ li >
161172< li > < code > < a title ="slack_bolt.context.say.say.Say.channel " href ="#slack_bolt.context.say.say.Say.channel "> channel</ a > </ code > </ li >
162173< li > < code > < a title ="slack_bolt.context.say.say.Say.client " href ="#slack_bolt.context.say.say.Say.client "> client</ a > </ code > </ li >
163174< li > < code > < a title ="slack_bolt.context.say.say.Say.metadata " href ="#slack_bolt.context.say.say.Say.metadata "> metadata</ a > </ code > </ li >
0 commit comments