twitchchat icon indicating copy to clipboard operation
twitchchat copied to clipboard

user_id type is different in Identity compared with user_id and room_id of messages

Open liquidnya opened this issue 4 years ago • 1 comments

The user_id in Identity::Full has the type i64, but other room_id and user_id functions of messages e.g. Privmsg::user_id uses u64 as the user id type.

When comparing the user_id or room_id with the bot identity user_id I have to convert between the types and handle the error cases:

  • Converting from u64 to i64 would break if there is an user id that is greater than i64::MAX
  • Converting from i64 to u64 would work fine if there are no negative user ids

If there are no negative user ids I suggest changing the type of user_id in Identity::Full to u64.

liquidnya avatar Jan 11 '21 12:01 liquidnya

Twitch does not specify the numeric bounds for those types. Being that most of their system speaks JSON, ideally those should be i64 (which matches the integer type most JSON implementations use (including serde_json)).

Its a mistake on my end to have u64s there. I intentionally used i64 but there has been some oversight. There isn't really any schema or spec to follow, so I'm just going off the cuff and hoping things stay relatively the same. I highly doubt Twitch would ever send a negative id, but my types->json would require a conversion, likely.

I agree they should all be the same type. I would prefer they be u64s but there is a sound reason for them to be i64s.

museun avatar Jan 13 '21 08:01 museun