mlomb / chat-analytics

Generate interactive, beautiful and insightful chat analysis reports
https://chatanalytics.app
GNU Affero General Public License v3.0
711 stars 51 forks source link

[Feature request] Use the most up-to-date user information available #44

Closed hopperelec closed 1 year ago

hopperelec commented 1 year ago

This is another niche thing, and I'm honestly not expecting you to want it implemented, but it's something that bothers me with the specific way I happen to be using ChatAnalytics, so I thought I'd mention it.

I like to use exports from some guilds or group chats which have often been deleted since I exported them meaning I am not longer able to update them. I'm honestly surprised the data is still in a format ChatAnalytics can read- one of the guilds used to have an error relating to some property being missing from the export but something changed in this PR has caused even this export to work (I have yet to actually look in to which property it is or what fixed it, I'll do this later).

But anyways, it works except for one annoying thing which is that lots of the user information is outdated in this reports, so if I upload any of them first then I notice lots of old (and nostalgic!) usernames, lots of missing profile pictures and for some reason deleted users display as 'Deleted User0' instead of 'Deleted User#USER_ID', which I've noticed ChatAnalytics usually does for Webhooks but not users.

What I'd like to suggest is that this type of information is overwritten by more recent exports. So, if one export is read, but then a newer one is read with different information, the information is changed to match that of the newer export instead of staying as the old data.

mlomb commented 1 year ago

Probably this line:

https://github.com/mlomb/chat-analytics/blob/cb2e61898e6d2a6e1cde43e64fa4f2f93826f92f/pipeline/parse/parsers/DiscordParser.ts#L61

In older exports nickname is not available but name is

hopperelec commented 1 year ago

Ah yes, that would be it!

On Thu, 19 Jan 2023 at 02:11, Martín Lombardo @.***> wrote:

Probably this line:

https://github.com/mlomb/chat-analytics/blob/cb2e61898e6d2a6e1cde43e64fa4f2f93826f92f/pipeline/parse/parsers/DiscordParser.ts#L61

In older exports nickname is not available but name is

— Reply to this email directly, view it on GitHub https://github.com/mlomb/chat-analytics/issues/44#issuecomment-1396352353, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMPUIAQRU2PZQ346XD4LO33WTCPDJANCNFSM6AAAAAAT7Y4FM4 . You are receiving this because you authored the thread.Message ID: @.***>

mlomb commented 1 year ago

About to up-to-date information, it used to keep the most up to date info but that required overwriting the object every time, so I just kept the first How could it be done without checking every field? (every time we find an author in a message)

hopperelec commented 1 year ago

Relating back to this comment, I think this would be another thing improved using hashing, as you could choose to only update the user if the same object can’t be found in the list of users. Of course, this would require re-parsing all the user information for every message, so it might be a good idea to produce the hash using the raw data provided in the export instead of the parsed data.