Haha sure thing.
First step, make sure your lang file's entry is in order.
<CATEGORY Name="Journal">
<Entry Name="Diary_YourDiary_Name1">Your Diary's Name</Entry>
<Entry Name="Diary_YourDiary_Text1">[voice yourdiarynarration.ogg][br]Your Diary's Text</Entry>
</CATEGORY>
That's the basic structure. For diaries that have multiple notes (for instance, a story split up into 3 parts), use the indexes after the entry name. I believe this is just used to put the dairies in order in your journal, in case you pick them up out of order. Not sure though. The 'yourdiarynarration' sound file, or whatever it may be in your case NEEDS to exist. Without it the diary will automatically close once it is picked up, even when you put ReturnOpenJournal(true); in your diary's callback. This is because diaries NEED a narration to play when they are picked up, while notes' narrations are optional.
Now, on to your prop. Place the diary page and select it. On the right side you'll see two tabs. Click the 'Entity' tab. Under the DiaryText field put 'YourDiary', or whatever it was named in your lang file. Next, put 'YourDiaryCallback' under the DiaryCallback field. Don't include those single quotation marks.
In your script file, add the function:
void YourDiaryCallback(string &in name, int index)
{
ReturnOpenJournal(true);
//This stuff will happen when your diary is picked up
}
Once this is all done, launch your story from the main menu and see if it works
If your diary's text isn't working, check your lang file for mistakes. If it is opening and closing immediately, make sure your diary's narration file matches the file you pointed to in your lang file, and that it exists and is in the game files somewhere, ideally the sounds folder.