MCPcopy Create free account
hub / github.com/Botloader/botloader / update_guild_commands

Method update_guild_commands

components/scheduler/src/command_manager.rs:167–221  ·  view source on GitHub ↗
(&mut self, guild_id: Id<GuildMarker>)

Source from the content-addressed store, hash-verified

165 }
166
167 async fn update_guild_commands(&mut self, guild_id: Id<GuildMarker>) -> Result<(), ()> {
168 let script_commands = self
169 .config_store
170 .get_enabled_script_command_contributes(guild_id)
171 .await
172 .map_err(|err| {
173 error!(%err, "failed retrieving guild script command contributes");
174 })?;
175
176 let merged = merge_script_commands(script_commands);
177
178 let serialized = serde_json::to_string(&merged).unwrap();
179 if let Some(current) = self.cached_commands.get(&guild_id) {
180 if current == &serialized {
181 self.guild_logger.log(LogEntry::info(
182 guild_id,
183 format!(
184 "skipped updating commands as there was no changes, top level commands: {}",
185 merged.len()
186 ),
187 ));
188
189 return Ok(());
190 }
191 }
192
193 self.guild_logger.log(LogEntry::info(
194 guild_id,
195 format!(
196 "updating guild commands, top level commands: {}",
197 merged.len()
198 ),
199 ));
200
201 let interaction_client = self.discord_config.interaction_client();
202
203 if let Err(err) = interaction_client
204 .set_guild_commands(guild_id, &merged)
205 .await
206 {
207 error!(%err, "failed updating guild commands");
208
209 self.guild_logger.log(LogEntry::error(
210 guild_id,
211 "failed updating guild commands".to_string(),
212 ));
213 // TODO: for now this returns an ok, in the future once we have
214 // more validation we could return an err here and have it retry
215 // (but not for client errors)
216 }
217
218 self.cached_commands.insert(guild_id, serialized);
219
220 Ok(())
221 }
222}
223
224static GROUP_DESC_PLACEHOLDER: &str = "no description";

Callers 1

process_itemMethod · 0.80

Calls 6

merge_script_commandsFunction · 0.85
errorFunction · 0.85
logMethod · 0.80
interaction_clientMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected