diff --git a/lib/oto/commands/util/slack.dart b/lib/oto/commands/util/slack.dart index 51858d2..9d009e2 100644 --- a/lib/oto/commands/util/slack.dart +++ b/lib/oto/commands/util/slack.dart @@ -25,13 +25,24 @@ class Slack extends Command { } else if(data.message != null) { await sender.send(jsonEncode(data.message)); } else if(data.messageJson != null) { - await sender.send(data.messageJson!); + await sender.send(getName2ID(data.messageJson!, data.idMap)); } else { throw Exception('property or message field should not be null'); } return simpleFuture; } + + String getName2ID(String message, Map? idMap) { + if(idMap == null) { + return message; + } else { + for(var entry in idMap.entries) { + message = message.replaceAll('@${entry.key}', '<@${entry.value}>'); + } + return message; + } + } } class SlackBuild extends Command { diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index 51becae..1788d72 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -500,6 +500,7 @@ class DataSlackSender extends DataParam { late dynamic property; //oto 내부 생성된 object의 경우 late Map? message; //yaml로 선언된 값 late String? messageJson; //json값으로 선언된 값 + late Map? idMap; factory DataSlackSender.fromJson(Map json) => _$DataSlackSenderFromJson(json); diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index 049995d..8a47ea0 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -868,7 +868,10 @@ DataSlackSender _$DataSlackSenderFromJson(Map json) => ..token = json['token'] as String ..property = json['property'] ..message = json['message'] as Map? - ..messageJson = json['messageJson'] as String?; + ..messageJson = json['messageJson'] as String? + ..idMap = (json['idMap'] as Map?)?.map( + (k, e) => MapEntry(k, e as String), + ); Map _$DataSlackSenderToJson(DataSlackSender instance) => { @@ -881,6 +884,7 @@ Map _$DataSlackSenderToJson(DataSlackSender instance) => 'property': instance.property, 'message': instance.message, 'messageJson': instance.messageJson, + 'idMap': instance.idMap, }; DataSlackBuild _$DataSlackBuildFromJson(Map json) => @@ -896,6 +900,9 @@ DataSlackBuild _$DataSlackBuildFromJson(Map json) => ..property = json['property'] ..message = json['message'] as Map? ..messageJson = json['messageJson'] as String? + ..idMap = (json['idMap'] as Map?)?.map( + (k, e) => MapEntry(k, e as String), + ) ..appName = json['appName'] as String ..type = $enumDecode(_$SlackBuildTypeEnumMap, json['type']) ..color = json['color'] as String @@ -914,6 +921,7 @@ Map _$DataSlackBuildToJson(DataSlackBuild instance) => 'property': instance.property, 'message': instance.message, 'messageJson': instance.messageJson, + 'idMap': instance.idMap, 'appName': instance.appName, 'type': _$SlackBuildTypeEnumMap[instance.type]!, 'color': instance.color,