bots, like BitBot, track user accounts (through WHOX, extended-join
, account-notify
) to grant permissions to users without them having to register/identify directly with BitBot.
This works well most of the time but there's two problematic situations;
- a user changes the name of their account and loses their permissions
- a user changes the name of their account or drops their account, someone else comes along and registers the same nickname and is granted the permissions that user had
additionally, people abuse mechanics for account name changes to avoid extbans (e.g., +b $a:jess
to ban the account name "jess".) we could leverage unchanging account IDs to enact bans on these kinds of problem users that would persist through account name changes by targetting account ID rather than account name.
pretty simple; expose an indefinitely unique and unchanging (and opaque!) account ID.
account IDs MUST NOT be reused. account IDs SHOULD NOT change.
i propose this account ID is exposed in at least 4 areas;
- a WHOX flag
- a
message-tag
onJOIN
- a
message-tag
onACCOUNT
(account-notify
) - a
message-tag
onPRIVMSG
/NOTIFY
/TAGMSG
and i also suggest it is exposed on as many messages, sourced from a user action, as possible; e.g. if a bot will only respond to INVITE
s from users with a given permission.
@account=jess;draft/account-id=123 :jess!u@h JOIN #channel
:jess!u@h JOIN #channel
@draft/account-id=123 :jess!u@h ACCOUNT jess
@account=jess;draft/account-id=123 :jess!u@h PRIVMSG #channel :hey everyone!
as mentioned, this ID should be opaque. it is recommend that it is not just an incrementing integer because that exposes the order of registrations which may be unwanted.
anecdotally, services devs have told me it wouldn't be a big issue to introduce this ID.
having a persistently trackable ID tied to your account means that changing your account name will not protect you from being tracked.
i suggest that this account ID is not ever changed unless the user directly and explicitly asks for it to be; at which point they should be heavily warned about the potential implications of doing so.