Python [Discord.py] - Sports Fixture Bot
@client.event
async def on_ready():
    for guild in client.guilds:
        if guild.name == GUILD:
            break

    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})'
    )

There is a bug if GUILD is not in the client guilds, as it will print out 'client.user' is connected to the last guild in the list. This is especially problematic if client.guilds is empty, as you'll end up with an exception due to never initialising 'guild'.
I would suggest a little more &quot;defensive&quot; code to check for this kind of problem, as good logging here could save you a headache later. It should be fine to do since this code will rarely be run.
@client.event
async def on_ready():
    def get_guild_by_name(guild_name):
        for guild in client.guilds:
            if guild.name == guild_name:
                return guild
    
    guild = get_guild_by_name()
    if not guild:
        // Code to handle this case. Log, print, throw, whatever you want it to do

        return

    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})'
    )


id = client.get_guild(73194****229982)

This is an example of a hardcoded value that should really be either in a config file, or assigned to a constant at the top of the file. If you were ever to change the guild for some reason, you'd have to track down all these occurrences and update them. Other places to look at are the hardcoded paths, and the token(!) at the bottom.

if str(message.channel) == &quot;boxingmma&quot;:
    if message.content.find(&quot;!boxing&quot;) != -1:

        with open('/home/brendan/Desktop/boxingtest.txt', 'r') as file:
            msg = file.read(2000).strip()
            while len(msg) &gt; 0:
                await message.author.send(msg)
                msg = file.read(2000).strip()

This block of code repeats a few times, with some minor differences. Since you may add more stats or need to make information available across multiple channels, I would think about how to make adding new commands to a channel as easy as possible. Ideally adding a new command is at most a line long, and obviously doesn't break any other commands.
I think splitting the above code into two functions, one that checks if the command is recognised (the matching) and one that does the work (retrieving the stats). The reasoning behind this separation is that the part of the above code that does the work doesn't change much, but the command matching does.
Some small things of note

x in y is a little more direct than y.find(x) != -1
I don't know why it reads the file in 2000 byte chunks, so I've left it alone. Is this really needed?
while len(msg) &gt; 0: can be reduced to while msg: as containers like strings are truthy when they are not empty.
If you are on a recent enough version of Python, the walrus operator can be used here to remove some repeated code.
I like Path from pathlib, it has prevent a couple of errors I would have otherwise made.

The below code is for demonstration purposes, I haven't run it so I don't know if there are any issues. I also have defined the functions inline, but they would probably be better off outside on_message definition.
@client.event
async def on_message(message):
    id = client.get_guild(73194****229982)

    def matches_channel_command(message, expected_channel, expected_command):
        channel_name = str(message.channel)
        if channel_name != expected_channel:
            return False

        return expected_command in message.content

    async def retrieve_stats(path_):
        with open(path_, 'r') as file:
            msg = file.read(2000).strip()
            while msg:
                await message.author.send(msg)
                msg = file.read(2000).strip()

    if matches_channel_command(message, &quot;boxingmma&quot;, &quot;!boxing&quot;):
        await retrieve_stats(&quot;/home/brendan/Desktop/boxingtest.txt&quot;)
    ...