@@ -37,7 +37,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
37
37
< dl >
38
38
< dt id ="slack_bolt.context.say.say.Say "> < code class ="flex name class ">
39
39
< 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 >
41
41
</ code > </ dt >
42
42
< dd >
43
43
< div class ="desc "> </ div >
@@ -50,18 +50,21 @@ <h2 class="section-title" id="header-classes">Classes</h2>
50
50
channel: Optional[str]
51
51
thread_ts: Optional[str]
52
52
metadata: Optional[Union[Dict, Metadata]]
53
+ build_metadata: Optional[Callable[[], Optional[Union[Dict, Metadata]]]]
53
54
54
55
def __init__(
55
56
self,
56
57
client: Optional[WebClient],
57
58
channel: Optional[str],
58
59
thread_ts: Optional[str] = None,
59
60
metadata: Optional[Union[Dict, Metadata]] = None,
61
+ build_metadata: Optional[Callable[[], Optional[Union[Dict, Metadata]]]] = None,
60
62
):
61
63
self.client = client
62
64
self.channel = channel
63
65
self.thread_ts = thread_ts
64
66
self.metadata = metadata
67
+ self.build_metadata = build_metadata
65
68
66
69
def __call__(
67
70
self,
@@ -87,6 +90,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>
87
90
text_or_whole_response: Union[str, dict] = text
88
91
if isinstance(text_or_whole_response, str):
89
92
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
90
95
return self.client.chat_postMessage( # type: ignore[union-attr]
91
96
channel=channel or self.channel, # type: ignore[arg-type]
92
97
text=text,
@@ -103,7 +108,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
103
108
mrkdwn=mrkdwn,
104
109
link_names=link_names,
105
110
parse=parse,
106
- metadata=metadata or self.metadata ,
111
+ metadata=metadata,
107
112
**kwargs,
108
113
)
109
114
elif isinstance(text_or_whole_response, dict):
@@ -113,7 +118,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>
113
118
if "thread_ts" not in message:
114
119
message["thread_ts"] = thread_ts or self.thread_ts
115
120
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
117
123
return self.client.chat_postMessage(**message) # type: ignore[union-attr]
118
124
else:
119
125
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>
122
128
</ details >
123
129
< h3 > Class variables</ h3 >
124
130
< 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 >
125
135
< dt id ="slack_bolt.context.say.say.Say.channel "> < code class ="name "> var < span class ="ident "> channel</ span > : Optional[str]</ code > </ dt >
126
136
< dd >
127
137
< div class ="desc "> </ div >
@@ -158,6 +168,7 @@ <h3>Class variables</h3>
158
168
< li >
159
169
< h4 > < code > < a title ="slack_bolt.context.say.say.Say " href ="#slack_bolt.context.say.say.Say "> Say</ a > </ code > </ h4 >
160
170
< 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 >
161
172
< li > < code > < a title ="slack_bolt.context.say.say.Say.channel " href ="#slack_bolt.context.say.say.Say.channel "> channel</ a > </ code > </ li >
162
173
< li > < code > < a title ="slack_bolt.context.say.say.Say.client " href ="#slack_bolt.context.say.say.Say.client "> client</ a > </ code > </ li >
163
174
< 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