DEV Community

💾 bun9000
💾 bun9000

Posted on • Edited on

3 2

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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay