Host a Python Discord Bot on AWS Lambda (Free and Easy)

Поделиться
HTML-код
  • Опубликовано: 29 ноя 2024

Комментарии • 44

  • @Pie_Master.
    @Pie_Master. 9 месяцев назад +3

    I love how much easier it is to understand how to do all of this, thank you!

    • @pixegami
      @pixegami  9 месяцев назад

      Glad to hear it. Thanks!

  • @sesameydmclips
    @sesameydmclips 10 месяцев назад +1

    Thanks for the tutorial! I wanted to try using Lambda instead of hosting on EC2 this time, and this worked well

    • @pixegami
      @pixegami  9 месяцев назад

      Awesome! Glad to hear it :)

  • @mozphat9308
    @mozphat9308 10 месяцев назад +1

    It took me way too many hours to FINALLY get commands to work. The registration part is not obvious. Thank you!

    • @pixegami
      @pixegami  9 месяцев назад +1

      Yeah, that took me ages too. Glad it was helpful!

  • @menisadi
    @menisadi 10 месяцев назад +2

    Please please make a video about making of a Telegram bot!
    I know that there are guides out there but your videos are just so clear that I think they add value even on topics which where already covered by others

    • @pixegami
      @pixegami  9 месяцев назад +2

      That's a great idea :) Thanks for the suggestion.

  • @volodymyrtruba7016
    @volodymyrtruba7016 8 месяцев назад +4

    Fantastic video! However, how do we handle logic that takes more than 3 seconds to execute, considering Discord messages have a 3-second limit?

    • @pandaanalytics
      @pandaanalytics 8 месяцев назад

      Second this! Running into this issue as well :)

    • @pandaanalytics
      @pandaanalytics 7 месяцев назад

      Did you figure it out already?

    • @volodymyrtruba7016
      @volodymyrtruba7016 7 месяцев назад

      Hi , I’ve reworked the bot, and deployed it on ec2, I am using discord.pu library, and t2.micro instance( which is free-tier eligible).

    • @pixegami
      @pixegami  7 месяцев назад

      Hmm, what do you mean the messages have a 3-second time-out? Do you mean Lambda's default time-out? If so, that can be adjusted up to 15 minutes I believe.

  • @HashtagTiluda
    @HashtagTiluda Год назад +9

    All the videos you publish are real gems. Not sure if you take requests but can you create a video on a full stack app creating with FastAPI/Supabase backend and NextJS frontend which would cover authentication, stripe billing, etc.

    • @pixegami
      @pixegami  Год назад +1

      Thank you! I'll add it to my list of ideas which I use as a starting point for videos. Bigger projects usually take a lot longer so I don't know how quickly I will get around to it. Thanks for the suggestion!

    • @HashtagTiluda
      @HashtagTiluda Год назад

      @@pixegami It's best you do a modular playlist. That way, if let's say someone is not using Supabase, they can still watch the other videos on the playlist.

    • @codingwithpar
      @codingwithpar Год назад +1

      @@pixegami i need your help what did you pick for the setup

    • @codingwithpar
      @codingwithpar Год назад

      @@pixegami and what are the commands you use for the AWS lambda

  • @Sn4red
    @Sn4red 8 месяцев назад +1

    Great video! Regarding performance, e.g a decent amount of users using a lot of commands simultaneously, does AWS Lambda take care of that?

    • @pixegami
      @pixegami  8 месяцев назад

      Yup! That's actually one of the big selling points of Lambda (and serverless). If a new request comes in, but your all Lambda instances are busy, Lambda will start a new instance. You can configure the "max" number of concurrent instances as well (I think by default it is 10).

  • @sanjayaelvitigala3086
    @sanjayaelvitigala3086 20 дней назад

    before deploying to the cloud, is it possible to test this using ngrok with tunneled connection? I am getting a signature forged error. would appreciate any feedback

  • @BrunoAtLoka
    @BrunoAtLoka 10 месяцев назад +1

    This is absolute gold! Really well presented, step by step!! New subscriber 💪 I wonder if you could do an extension of this example where the bot reacts to events that happen on the Discord server like a new user arriving at the server (from an invite link) to do something tricky - check if the email they registered their account on Discord matches the domain that I, the Discord bot owner, will define (it's actually to set a Role for users that belong to my company) 🤔

    • @pixegami
      @pixegami  9 месяцев назад

      Thank you! In theory I think it should be possible, we would just have to change the event that triggers the Lambda to be the one where new users join (I'm assuming Discord's API makes it available), but I haven't had a chance to take a closer look into it yet.

  • @ProGamingRV
    @ProGamingRV 3 месяца назад

    But this wouldn't work for events that expect a response, right? like modifying a message in a pool. Because it doesn't maintain the connection. And how do you keep bot from falling when the lamba goes cold?

  • @danielegurizzan
    @danielegurizzan Месяц назад

    Hello! Thank you for the amazing tutorial, even a noob like me could understand everything. I need help with CDK, I successfully installed and set up CDK and CLI with credentials. When I run "cdk bootstrap" it fails because the "aws-cdk-lib" and "constructs" modules are not found, did I miss a step?

    • @pixegami
      @pixegami  27 дней назад

      Hey there! Thanks for the kind words about the tutorial. Glad it was easy to follow!
      So I'm assuming you cloned a Typescript/Node CDK project (as opposed to setting it up from scratch) - you might have to just run `npm install` in the project first so the Node modules are actually installed.

  • @4cat.1dog
    @4cat.1dog Год назад +2

    Thank you for the good video. If I want to use the selenium library, how can I add a layer?

    • @pixegami
      @pixegami  Год назад

      You should be able to pip install selenium into the Docker build container too by putting it into the requirements txt. Or if you just wanna just run the whole thing in a Docker, then check out this video: ruclips.net/video/wbsbXfkv47A/видео.html

  • @THEREAL8030
    @THEREAL8030 3 месяца назад

    hi there i am facing this error : C:\Users\Lenovo\Downloads\discord-bot-lambda-main> REGISTER REGISTER_COMMANDS.PY
    'REGISTER' is not recognized as an internal or external command,
    operable program or batch file. please try help

  • @parYTG
    @parYTG Год назад +2

    I need help with what commands did you use for the command prompt? At 6:38

    • @Beltramstein
      @Beltramstein 11 месяцев назад +1

      Yeah me too. He could answer..

    • @Beltramstein
      @Beltramstein 11 месяцев назад

      A friend of mine helped me, change the line 17 on register_commands.py to:
      for command in commands["commands"]:
      this should work

    • @Beltramstein
      @Beltramstein 11 месяцев назад +1

      I`m on Windows 11 23H2 OS build 22635.2915, with Python 3.12 and VSC 1.85.1

  • @bigbadbroadcast
    @bigbadbroadcast 10 месяцев назад +1

    So I got all the way to the end, with deployment being successful and I got the link. However, when I check to see, my bot its still offline and also there is no function in aws. Does deploying create a function automatically?
    Follow up question, when you created your bot it was listed as online, while when I made mine it is automatically offline. What did you do here to get it online?
    EDIT
    alright I followed the steps again and got it working, but I still don't see the lambda function in AWS, and I don't know how to debug any other way.
    EDIT AGAIN
    Found it in AWS, I was looking at the wrong region, still can't find a console to do debugging, was wondering exactly how I would test this locally

    • @pixegami
      @pixegami  9 месяцев назад

      Awesome! Glad you answered some of your own questions. In Lambda, you can see the logs in the "Monitoring Tab". It should have a link to the logs for Lambda invocations in the last X (I think 3?) hours. Read more here: docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html
      I haven't looked too deeply into how to test this locally. I guess I'd want unit tests to actually just test the function logic itself, and maybe I'd develop a script to upload it quickly to a copy (e.g. BETA) of the function for integration testing.
      A lot of it will depend on what hooks/endpoint options Discord offers you to test the integrations as well.

  • @gamersgame43
    @gamersgame43 6 месяцев назад

    Hi just asking is this method better hosting than EC2 method

  • @saphirsatillo2357
    @saphirsatillo2357 Год назад +1

    Thanks for the video. I have a question though, how do you unregister a command? I'm getting a 405 error when I try to request delete.

    • @pixegami
      @pixegami  Год назад

      I should have put that in the video: discord.com/developers/docs/interactions/application-commands#updating-and-deleting-a-command
      The endpoint is different, and you'll also need the command ID (which you can get several ways). I got the command ID in the Discord UI directly by right-clicking on the command tooltip after I type it in (e.g. `/hello`).

  • @innerpeacetheskullcollector
    @innerpeacetheskullcollector 3 месяца назад

    can i host javascript v14 bot with this?

  • @bleakaddict
    @bleakaddict 5 месяцев назад

    Just wanna know if its a serverless hosting

  • @Rohitnansen
    @Rohitnansen Год назад

    When I attempt to create a bot in discord, it shows as offline instead of online in my server as it is for you. Anyone know the approach to turn it on?

    • @pixegami
      @pixegami  Год назад

      Do you see any error or status messages in the logs?

    • @sesameydmclips
      @sesameydmclips 10 месяцев назад

      I found that interesting as well, since Lambda is only called when needed, so mine appears offline too despite no error in the cloudwatch logs.
      In contrast, when I host a bot locally, the bot appears online.