Bots are automated tools that can be used to perform tedious work or certain repetitive tasks related to a wiki.
An IRC RC Bot can post recent changes to your wiki on an IRC channel.
WP:CREATEBOT has information on many bot frameworks, written in various programming languages, that can be used to edit wikis through the API.
Because a bot can make hundreds or even thousands of edits per hour or minute, thus flooding recent changes, user rights should be configured to allow bots to be given a special user right that will prevent their edits from appearing in the default recent changes feed.
As this could cause thousands of incorrect or malicious bot edits to go unnoticed for a long time, this right should only be given to bots operated by trusted users.

This is the right that grants the user the ability to perform an edit with a "bot" flag.

Facts:

Not all users with this right are "bots".

The flag can be toggled on a per-edit basis. Bot software will activate this flag. But an account can be used by humans and bot software simultaneously. A dedicated bot account will typically have all its edits bot-flagged, but other users may contribute regularly and also run a bot from time to time with their credentials.

This user group is available in MediaWiki by default to grant a user the bot right (because user management goes by groups, not rights.
To grant a user the bot right, one adds the user to a group that provides that right).

Facts:

Group membership can change over time. There are many bot-flagged edits by users that are no longer in a user group providing the bot right. Likewise there are many edits not bot-flagged by users that now have the bot right (which they may or may not use for each edit).

Not all bots are a member of this group (there are other groups that provide this right, sysop, for example).

This is the only reliable factor.
This indicates most accurately that the edit was intended as bot edit (and that the user could do so because they had the bot user right when the edit was made).

It is especially reliable because the data is stored with the edit, not calculated afterwards, so it isn't affected by the user's group memberships at query time.

However it has one catch: The data is only stored in the recentchanges table, from which it expires after 30 days.
This may be why this best way is also the least common way to categorize bot edits in analytics (unless only covering recent data).

The bot flag could/should be stored in the revision table, thus making it permanently available (task T19237).