DEV Community

💾 bun9000
💾 bun9000

Posted on • Edited on

Refactoring a Python Bot [Live Coding Recap]

Streamed: 10/29 on Twitch

Topic(s): We hung out & refactored DeepThonk (the python bot's) code!
Language: Python, JSON
Tech & libs used: VSCode, TwitchIO

👇 You can find the notes and code from stream down below! :D

StarProject Repository
💜 Follow ⇒ on Twitch and GitHub
🔴 WatchTwitch VOD (replay)

During the stream we...

✔ moved !project from FAQ's into it's own command
✔ made !project settable from chat
✔ moved all other commands to commands.py
✔ cleaned up commands & commented uncommented funcs
✔ created a command module and moved all commands in there
✔ created a command to enable/disable shoutouts
✔ created a !raider command to thank (and shoutout) raiders!

Here's some of the code we wrote...

Shoutouts can be a little too much sometimes when we're actively developing the bot, so we created a chat function to turn them on or off on the fly.

# in commands.cmds
@bot.command(name='shoutouts')
async def shoutouts(ctx):
    'toggles shoutouts on or off'
    if data.get_setting('shoutouts'):
        data.set_setting('shoutouts', False)
        await ctx.send('Shoutouts are off now.')
    else:
        data.set_setting('shoutouts', True)
        await ctx.send('Shoutouts are back on!')
Enter fullscreen mode Exit fullscreen mode

And, at the recommendation of chat, we created a command to shout out (and thank) raiders.

# in commands.cmds
@bot.command(name='raider')
async def raider(ctx):
    'shouts & thanks raiders'
    token = ctx.content.split(' ', 1)
    if token[1][0] == '@':  # strip @'s if they passed in user name arg with one
        raider = token[1][1:]
    else:
        raider = token[1]
    msg = f"ninjab1Bigups to @{raider} for the sick raid! Check them out at https://twitch.tv/{raider}"
    await ctx.send(msg)
Enter fullscreen mode Exit fullscreen mode

Top comments (0)