title
Discord Bots 3: Coding a Bot with discord.js
description
It's finally time to write some code! In this video, I demonstrate the very basics of coding a "hello world"-style bot with discord.js.
💻 Code: https://thecodingtrain.com/learning/bots/discord/03-discordjs.html
💻 Glitch: https://glitch.com/~choo-choo-bot-discord
💻 GitHub: https://github.com/CodingTrain/Discord-Bot-Choo-Choo
🎥 Next: https://youtu.be/G2Yns7NUSq4
🎥 All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6avBYxeBSwF48YhAnSn_sA4
Links discussed in this video:
🔗 discord.js: https://discord.js.org/
🔗 Discord.js Guide: https://discordjs.guide/
🔗 DisStreamChat Bot: https://www.disstreamchat.com/
🔗 The Coding Train Discord: https://thecodingtrain.com/discord
Other videos mentioned in this video:
🎥 Server Side with Node.js: https://youtu.be/wxbQP1LMZsw
🎥 Hiding API Keys (dotenv): https://youtu.be/17UVejOw3zA
🎥 Building a Discord bot with Daniel Shiffman of the Coding Train: https://youtu.be/gzM7kj6gV5I
0:00 Introduction
1:36 Code! Creating a Node Application
3:44 Code! Adding discord.js: https://discord.js.org/ https://discordjs.guide/
4:37 Code! Creating and Authenticating the Bot
8:08 Code! Replying to Messages
10:59 Code! Specifying a Channel
13:28 Code! Random replies
15:03 Other Bot Examples and Suggestions
🚂 Website: http://thecodingtrain.com/
👾 Share Your Creation! https://thecodingtrain.com/Guides/community-contribution-guide.html
🚩 Suggest Topics: https://github.com/CodingTrain/Rainbow-Topics
💡 GitHub: https://github.com/CodingTrain
💬 Discord: https://discord.gg/hPuGy2g
💖 Membership: http://youtube.com/thecodingtrain/join
🛒 Store: https://standard.tv/codingtrain
📚 Books: https://www.amazon.com/shop/thecodingtrain
🖋️ Twitter: https://twitter.com/thecodingtrain
📸 Instagram: https://www.instagram.com/the.coding.train/
🎥 Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
🎥 Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
🔗 p5.js: https://p5js.org
🔗 p5.js Web Editor: https://editor.p5js.org/
🔗 Processing: https://processing.org
📄 Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
detail
{'title': 'Discord Bots 3: Coding a Bot with discord.js', 'heatmap': [{'end': 235.649, 'start': 189.687, 'weight': 0.714}, {'end': 435.111, 'start': 423.376, 'weight': 1}], 'summary': "Tutorial series 'discord bots 3: coding a bot with discord.js' covers creating a discord bot with node.js, customizing it to reply to specific messages in a channel, creating interactive bots like the magic 8-ball bot, and exploring features of the distream bot. it provides insights on the use of discord api, user engagement, and hints at future content on token security and using the .env node package.", 'chapters': [{'end': 378.558, 'segs': [{'end': 44.541, 'src': 'embed', 'start': 20.866, 'weight': 0, 'content': [{'end': 28.151, 'text': "So hopefully, if you've come through the first two, you've already created your own Discord client application and bot.", 'start': 20.866, 'duration': 7.285}, {'end': 34.414, 'text': 'And also, you will hopefully have terminal access to your computer with Node installed.', 'start': 28.551, 'duration': 5.863}, {'end': 39.978, 'text': "So if you don't have those, go back to the previous videos or look for the video descriptions for those steps that you need to follow.", 'start': 34.474, 'duration': 5.504}, {'end': 42.179, 'text': "But if you've got all that, you're ready to go.", 'start': 40.198, 'duration': 1.981}, {'end': 44.541, 'text': 'I want to write some code.', 'start': 43.8, 'duration': 0.741}], 'summary': 'Viewers should have created a discord client application and bot, and have terminal access with node installed to proceed with the tutorial.', 'duration': 23.675, 'max_score': 20.866, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM20866.jpg'}, {'end': 151.6, 'src': 'embed', 'start': 118.689, 'weight': 3, 'content': [{'end': 118.949, 'text': 'in it.', 'start': 118.689, 'duration': 0.26}, {'end': 121.47, 'text': 'So NPM is Node Package Manager.', 'start': 119.249, 'duration': 2.221}, {'end': 124.851, 'text': 'It is a part of Node, and it allows you to manage your packages.', 'start': 121.95, 'duration': 2.901}, {'end': 131.433, 'text': 'That makes sense now, right? But basically, this is the command for I want to start a Node project.', 'start': 125.851, 'duration': 5.582}, {'end': 137.555, 'text': "So if I run that, it's going to give me some prompts to say like oh why don't you tell me some stuff about this project,", 'start': 132.193, 'duration': 5.362}, {'end': 139.915, 'text': 'like its name and its license and the author of it?', 'start': 137.555, 'duration': 2.36}, {'end': 146.297, 'text': 'And you should be thoughtful, and you could even set up some settings on your computer to have it autofill with key information.', 'start': 140.676, 'duration': 5.621}, {'end': 151.6, 'text': "But just to move through this kind of quickly right now, I'm just going to hit Enter, and I'm going to say OK.", 'start': 146.317, 'duration': 5.283}], 'summary': 'Npm is node package manager for managing node packages and starting a node project.', 'duration': 32.911, 'max_score': 118.689, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM118689.jpg'}, {'end': 235.649, 'src': 'heatmap', 'start': 189.687, 'weight': 0.714, 'content': [{'end': 196.211, 'text': "In package.json, it says the main script that's part of this program, this bot, is index.js.", 'start': 189.687, 'duration': 6.524}, {'end': 197.732, 'text': 'So of course, I could name this anything I want.', 'start': 196.251, 'duration': 1.481}, {'end': 200.474, 'text': 'And just to make that point, let me change this to bot.js.', 'start': 197.772, 'duration': 2.702}, {'end': 203.696, 'text': "And then I'm going to create a new file called bot.js.", 'start': 200.894, 'duration': 2.802}, {'end': 207.139, 'text': "And I'm just going to say console.log, beep, beep.", 'start': 204.277, 'duration': 2.862}, {'end': 211.754, 'text': "And now I've got index.js, package.json.", 'start': 208.089, 'duration': 3.665}, {'end': 221.128, 'text': "And if I go back to my console and I run the command node bot.js, this is me running the code that's in bot.js.", 'start': 211.854, 'duration': 9.274}, {'end': 222.818, 'text': 'Beep, beep.', 'start': 222.298, 'duration': 0.52}, {'end': 227.823, 'text': 'Now for this project, I want to make use of something called discord.js.', 'start': 222.979, 'duration': 4.844}, {'end': 235.649, 'text': 'Discord.js is a node module that allows you to interact with the Discord API very easily.', 'start': 228.423, 'duration': 7.226}], 'summary': 'Modifying main script to bot.js and using discord.js for discord api interaction.', 'duration': 45.962, 'max_score': 189.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM189687.jpg'}, {'end': 266.018, 'src': 'embed', 'start': 237.171, 'weight': 1, 'content': [{'end': 243.256, 'text': "And I've got the command right here to get going with it, npm install discord.js.", 'start': 237.171, 'duration': 6.085}, {'end': 244.797, 'text': 'I can type that command here.', 'start': 243.636, 'duration': 1.161}, {'end': 250.042, 'text': 'This is going to add that module to my project.', 'start': 247.059, 'duration': 2.983}, {'end': 257.116, 'text': "I can go back and check package.json, and you'll see right here it is now one of the dependencies.", 'start': 251.755, 'duration': 5.361}, {'end': 262.096, 'text': 'So I have access to using the discord.js node module in my project.', 'start': 257.375, 'duration': 4.721}, {'end': 266.018, 'text': 'Now, amazingly, I have a full example right here.', 'start': 262.458, 'duration': 3.56}], 'summary': 'Installed discord.js using npm, now available as a dependency in the project.', 'duration': 28.847, 'max_score': 237.171, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM237171.jpg'}, {'end': 312.261, 'src': 'embed', 'start': 283.705, 'weight': 2, 'content': [{'end': 288.487, 'text': 'The require function is a function that essentially imports the Discord.js module.', 'start': 283.705, 'duration': 4.782}, {'end': 290.268, 'text': 'And then I want to create a client.', 'start': 288.828, 'duration': 1.44}, {'end': 297.973, 'text': 'The client is the object, the JavaScript object, that connects to the Discord API itself to manage to run the bot.', 'start': 290.569, 'duration': 7.404}, {'end': 304.854, 'text': 'But I need to very specifically authenticate with the Discord API with that particular bot.', 'start': 298.888, 'duration': 5.966}, {'end': 308.317, 'text': 'So this is now where I need to say client.login.', 'start': 305.074, 'duration': 3.243}, {'end': 312.261, 'text': 'And this is where I need to put my bot token.', 'start': 308.838, 'duration': 3.423}], 'summary': 'Using discord.js to create a client to manage a bot and authenticate with a bot token.', 'duration': 28.556, 'max_score': 283.705, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM283705.jpg'}], 'start': 1.304, 'title': 'Creating a discord bot with node.js', 'summary': 'Covers setting up a node project, requiring node installation and terminal access, using npm to initiate the project with default settings, modifying package.json, installing discord.js, and initializing the bot with a token, with a demonstration of how to authenticate with the discord api.', 'chapters': [{'end': 159.446, 'start': 1.304, 'title': 'Creating a discord bot with node', 'summary': 'Covers setting up a node project to create a discord bot, requiring node installed and terminal access, and using npm to initiate the project with default settings.', 'duration': 158.142, 'highlights': ['The chapter covers setting up a Node project to create a Discord bot, requiring Node installed and terminal access, and using NPM to initiate the project with default settings.', 'The author emphasizes the need for Node installed and terminal access to proceed with creating a Discord bot.', 'NPM (Node Package Manager) is used to manage the Node project, allowing the author to set up a new project with default prompts and settings.']}, {'end': 378.558, 'start': 159.786, 'title': 'Setting up a discord bot with node.js', 'summary': 'Covers setting up a discord bot using node.js, including modifying package.json, installing discord.js, and initializing the bot with a token, with a demonstration of how to authenticate with the discord api.', 'duration': 218.772, 'highlights': ['The main script for the bot is specified in package.json as index.js, with the option to be renamed.', "The process of installing discord.js is demonstrated using the command 'npm install discord.js', adding it as a dependency in package.json.", 'The require function is used to import the discord.js module, and the client object is created to connect to the Discord API and run the bot.', 'Authentication with the Discord API is done by using the client.login method and providing the bot token, with a note on the importance of storing the token securely.', 'A demonstration of obtaining and using the bot token from the Discord developer portal is provided, emphasizing the need for secure token management.']}], 'duration': 377.254, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM1304.jpg', 'highlights': ['The chapter covers setting up a Node project to create a Discord bot, requiring Node installed and terminal access, and using NPM to initiate the project with default settings.', "The process of installing discord.js is demonstrated using the command 'npm install discord.js', adding it as a dependency in package.json.", 'Authentication with the Discord API is done by using the client.login method and providing the bot token, with a note on the importance of storing the token securely.', 'NPM (Node Package Manager) is used to manage the Node project, allowing the author to set up a new project with default prompts and settings.', 'The author emphasizes the need for Node installed and terminal access to proceed with creating a Discord bot.']}, {'end': 875.384, 'segs': [{'end': 406.688, 'src': 'embed', 'start': 378.998, 'weight': 0, 'content': [{'end': 381.419, 'text': 'The way that I implement this is with an event handler.', 'start': 378.998, 'duration': 2.421}, {'end': 384.18, 'text': "And there's actually lots of different kinds of events I can handle.", 'start': 381.439, 'duration': 2.741}, {'end': 390.083, 'text': 'Like, I want to handle an event when somebody emoji reacts to my message or when a new user joins the Discord.', 'start': 384.2, 'duration': 5.883}, {'end': 391.924, 'text': "Right now, I just want to know when I'm ready.", 'start': 390.303, 'duration': 1.621}, {'end': 393.245, 'text': 'So I could say client.', 'start': 392.244, 'duration': 1.001}, {'end': 396.966, 'text': 'This is to handle any particular event.', 'start': 394.105, 'duration': 2.861}, {'end': 398.986, 'text': 'And the event has to have a name.', 'start': 397.666, 'duration': 1.32}, {'end': 400.666, 'text': 'And this event is called ready.', 'start': 399.446, 'duration': 1.22}, {'end': 404.407, 'text': 'And then I want a function that is called when that event happens.', 'start': 401.047, 'duration': 3.36}, {'end': 406.688, 'text': 'And I could put an anonymous function in here.', 'start': 404.727, 'duration': 1.961}], 'summary': 'Implementing event handling for various discord events, such as emoji reactions and new user joins, with a focus on readiness.', 'duration': 27.69, 'max_score': 378.998, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM378998.jpg'}, {'end': 457.403, 'src': 'heatmap', 'start': 423.376, 'weight': 1, 'content': [{'end': 424.738, 'text': 'I like to console log emojis.', 'start': 423.376, 'duration': 1.362}, {'end': 425.579, 'text': "That's how I debug.", 'start': 424.778, 'duration': 0.801}, {'end': 432.187, 'text': 'And so hopefully now, if I run this again, we got the heart.', 'start': 426.24, 'duration': 5.947}, {'end': 435.111, 'text': "So it authenticated successfully, and it's ready to go.", 'start': 432.267, 'duration': 2.844}, {'end': 437.454, 'text': "Let's go back to the Discord server.", 'start': 435.551, 'duration': 1.903}, {'end': 439.777, 'text': 'Choo Choo Bot, look at that.', 'start': 438.175, 'duration': 1.602}, {'end': 444.073, 'text': 'Choo Choo Bot is online right now.', 'start': 440.791, 'duration': 3.282}, {'end': 447.076, 'text': "So Choo Choo Bot is online because it's connected.", 'start': 444.294, 'duration': 2.782}, {'end': 450.478, 'text': "So what's next? I mean, there's so many things I could have this bot do.", 'start': 447.576, 'duration': 2.902}, {'end': 457.403, 'text': 'One thing I should really mention is that this might be a point where you pause and go take a look at a website called discordjs.guide.', 'start': 450.818, 'duration': 6.585}], 'summary': 'Debugged code to authenticate and connect choo choo bot, ready for further development. recommended visiting discordjs.guide.', 'duration': 34.027, 'max_score': 423.376, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM423376.jpg'}, {'end': 710.977, 'src': 'embed', 'start': 684.479, 'weight': 1, 'content': [{'end': 690.603, 'text': "You're only going to see that is if you have your developer mode enabled in the Discord client.", 'start': 684.479, 'duration': 6.124}, {'end': 698.068, 'text': 'Where you do that is under Settings, under Appearance, and then scrolling down under Advanced.', 'start': 691.164, 'duration': 6.904}, {'end': 701.03, 'text': 'So you can see I have developer mode enabled.', 'start': 698.468, 'duration': 2.562}, {'end': 706.694, 'text': 'As soon as you have that enabled, I can go back, and I can right-click, and I can get Copy ID.', 'start': 701.35, 'duration': 5.344}, {'end': 710.977, 'text': "The reason why I want that ID is because I'm going to go back to my code.", 'start': 707.014, 'duration': 3.963}], 'summary': 'Enable developer mode in discord settings to access user ids for coding purposes.', 'duration': 26.498, 'max_score': 684.479, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM684479.jpg'}, {'end': 786.204, 'src': 'embed', 'start': 760.771, 'weight': 2, 'content': [{'end': 766.434, 'text': 'And I do not get a reply, because now I have limited the replies only to bot testing.', 'start': 760.771, 'duration': 5.663}, {'end': 768.015, 'text': 'I should also mention.', 'start': 767.094, 'duration': 0.921}, {'end': 775.739, 'text': "the one thing you notice here is that it's always at mentioning me, which is something that you might want, but not necessarily what you want.", 'start': 768.015, 'duration': 7.724}, {'end': 786.204, 'text': "So something that I could do in this particular case is I could change the way I'm replying by saying message.channel, so a particular channel,", 'start': 776.099, 'duration': 10.105}], 'summary': 'Bot testing replies limited, mentions need adjustment.', 'duration': 25.433, 'max_score': 760.771, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM760771.jpg'}, {'end': 843.876, 'src': 'embed', 'start': 813.874, 'weight': 3, 'content': [{'end': 817.257, 'text': 'Just to make this do something slightly more interesting,', 'start': 813.874, 'duration': 3.383}, {'end': 827.306, 'text': 'what if I were to create an array called replies and I were to put a few different replies in there, like this?', 'start': 817.257, 'duration': 10.049}, {'end': 832.91, 'text': 'Here I now have an array with four different replies.', 'start': 830.308, 'duration': 2.602}, {'end': 835.613, 'text': 'Maybe what I want to do is pick a random number.', 'start': 833.251, 'duration': 2.362}, {'end': 841.835, 'text': 'Multiply with this math.random picks a random number between 0 and 1.', 'start': 837.512, 'duration': 4.323}, {'end': 843.876, 'text': 'Multiply it by the length of the array.', 'start': 841.835, 'duration': 2.041}], 'summary': 'Creating an array with four different replies and picking a random number using math.random.', 'duration': 30.002, 'max_score': 813.874, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM813874.jpg'}], 'start': 378.998, 'title': 'Discord bot customization', 'summary': 'Details customizing a discord bot to reply to specific messages in a particular channel by copying the channel id, applying conditional checks, changing reply formats, and implementing random message selection from an array of replies.', 'chapters': [{'end': 661.794, 'start': 378.998, 'title': 'Discord bot event handling', 'summary': "Discusses implementing event handlers to handle different events like 'ready' and 'message' in discord bot, using examples and emphasizing the importance of simplicity and caution, with a reference to 'discordjs.guide' for advanced resources.", 'duration': 282.796, 'highlights': ["The chapter emphasizes the implementation of event handlers to handle different events like 'ready' and 'message' in the Discord bot, using examples and highlighting the importance of simplicity and caution, with a reference to 'discordjs.guide' for advanced resources.", "The author mentions the option to handle various events such as when someone emoji reacts to a message or when a new user joins the Discord, and then focuses on handling the 'ready' event, demonstrating the use of an anonymous function and arrow syntax for event handling.", "The chapter demonstrates handling the 'message' event to respond when a specific message, 'choo choo', is received, highlighting the importance of being careful about potential infinite loops and server spamming.", "The chapter advises pausing to explore 'discordjs.guide' for advanced resources and examples, and mentions the availability of a variety of resources for more advanced functionalities and ideas."]}, {'end': 875.384, 'start': 661.974, 'title': 'Discord bot customization', 'summary': 'Details the process of customizing a discord bot to reply to specific messages in a particular channel by copying the channel id, applying conditional checks, changing reply formats, and implementing random message selection from an array of replies.', 'duration': 213.41, 'highlights': ['The process of customizing a Discord bot to reply to specific messages in a particular channel by copying the channel ID. The user explains the process of copying the channel ID by enabling developer mode in Discord settings and obtaining the ID through a right-click option.', "Applying conditional checks to only reply to messages in a specific channel with specific content. The user demonstrates the implementation of conditional checks in the bot's code to ensure replies are limited to a particular channel and specific message content.", 'Changing the reply format to exclude app mentioning and only send an emoji reply to the message. The user modifies the reply format to exclude app mentioning and instead sends an emoji reply to the message, providing an alternative way of responding.', "Implementing random message selection from an array of replies to add variety to the bot's responses. The user creates an array of replies and demonstrates the implementation of random message selection to add variety to the bot's responses."]}], 'duration': 496.386, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM378998.jpg', 'highlights': ["The chapter emphasizes the implementation of event handlers to handle different events like 'ready' and 'message' in the Discord bot, using examples and highlighting the importance of simplicity and caution, with a reference to 'discordjs.guide' for advanced resources.", 'The process of customizing a Discord bot to reply to specific messages in a particular channel by copying the channel ID. The user explains the process of copying the channel ID by enabling developer mode in Discord settings and obtaining the ID through a right-click option.', "Applying conditional checks to only reply to messages in a specific channel with specific content. The user demonstrates the implementation of conditional checks in the bot's code to ensure replies are limited to a particular channel and specific message content.", "Implementing random message selection from an array of replies to add variety to the bot's responses. The user creates an array of replies and demonstrates the implementation of random message selection to add variety to the bot's responses."]}, {'end': 1128.691, 'segs': [{'end': 958.201, 'src': 'embed', 'start': 926.312, 'weight': 0, 'content': [{'end': 929.374, 'text': 'You ask it a question, and you shake it up, and it gives you an answer to that question.', 'start': 926.312, 'duration': 3.062}, {'end': 935.519, 'text': 'Could you make a magic eight-ball bot that answers your questions from a list of pre-made replies?', 'start': 929.434, 'duration': 6.085}, {'end': 944.794, 'text': "Also, let's go into Bot Talk and let's see what some of the features of the bot that's in Coding Train right now, the Distream bot, are.", 'start': 936.75, 'duration': 8.044}, {'end': 947.916, 'text': 'So for example, I can type exclamation point ping.', 'start': 945.114, 'duration': 2.802}, {'end': 958.201, 'text': "And this is actually pretty good practice for your bot if it's receiving messages to have some kind of set of characters that indicate it's a bot message as opposed to just general chatter.", 'start': 948.496, 'duration': 9.705}], 'summary': 'Creating a magic eight-ball bot with pre-made replies and exploring features of the distream bot for receiving bot messages.', 'duration': 31.889, 'max_score': 926.312, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM926312.jpg'}, {'end': 1052.884, 'src': 'embed', 'start': 1020.978, 'weight': 2, 'content': [{'end': 1022.579, 'text': 'How could you make a Magic 8-Ball bot??', 'start': 1020.978, 'duration': 1.601}, {'end': 1024.619, 'text': 'What kind of creative ideas do you have?', 'start': 1022.599, 'duration': 2.02}, {'end': 1025.859, 'text': 'So many possibilities.', 'start': 1024.94, 'duration': 0.919}, {'end': 1030.583, 'text': 'And if you want to look at the Distream Bot source code and learn more about what Distream Bot is,', 'start': 1025.88, 'duration': 4.703}, {'end': 1034.665, 'text': 'This is a bot and also a chat manager for streamers.', 'start': 1031.282, 'duration': 3.383}, {'end': 1037.549, 'text': "It's created by Coby and David, two members of the Coding Train community.", 'start': 1034.726, 'duration': 2.823}, {'end': 1042.694, 'text': 'It has a ton of features and lots of things you could do with live streaming on Twitch and with Discord and bot.', 'start': 1037.829, 'duration': 4.865}, {'end': 1044.756, 'text': "I won't get into all that, but check out the website.", 'start': 1042.894, 'duration': 1.862}, {'end': 1047.058, 'text': 'So this really wraps up this video.', 'start': 1045.356, 'duration': 1.702}, {'end': 1049.36, 'text': "I haven't shown you very much.", 'start': 1047.078, 'duration': 2.282}, {'end': 1052.884, 'text': "I mean, this is an exciting moment if you've gotten all these pieces to work.", 'start': 1049.62, 'duration': 3.264}], 'summary': 'Distream bot, created by coby and david, offers features for live streaming on twitch and discord.', 'duration': 31.906, 'max_score': 1020.978, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM1020978.jpg'}, {'end': 1128.691, 'src': 'embed', 'start': 1075.157, 'weight': 4, 'content': [{'end': 1083.282, 'text': "I'd absolutely love to hear about any discord bots you make and Poetry bots, creative arts bots weird, weird, strange, useless bots.", 'start': 1075.157, 'duration': 8.125}, {'end': 1088.326, 'text': "Or maybe you've made something very practical or useful that has a particular context.", 'start': 1083.563, 'duration': 4.763}, {'end': 1090.347, 'text': "I'd love to just hear about all of the stuff.", 'start': 1088.986, 'duration': 1.361}, {'end': 1092.048, 'text': 'So you can tweet me at Schiffman.', 'start': 1090.447, 'duration': 1.601}, {'end': 1094.61, 'text': 'Why am I talking about Twitter? This is the Discord bot series.', 'start': 1092.088, 'duration': 2.522}, {'end': 1096.931, 'text': 'Join the Discord.', 'start': 1094.73, 'duration': 2.201}, {'end': 1098.593, 'text': 'You can share stuff there.', 'start': 1097.572, 'duration': 1.021}, {'end': 1102.255, 'text': "There's also a web page associated with this video that has a way of.", 'start': 1098.773, 'duration': 3.482}, {'end': 1106.398, 'text': 'if you have documentation or information about your bot online somewhere, you can link to it from there.', 'start': 1102.255, 'duration': 4.143}, {'end': 1107.739, 'text': "So I'll see you.", 'start': 1107.018, 'duration': 0.721}, {'end': 1108.519, 'text': "It'll be a little while.", 'start': 1107.799, 'duration': 0.72}, {'end': 1109.52, 'text': "I'll be wearing a different shirt.", 'start': 1108.539, 'duration': 0.981}, {'end': 1112.561, 'text': 'But in the next videos, hopefully more exciting things to come.', 'start': 1109.74, 'duration': 2.821}, {'end': 1115.563, 'text': 'In particular, I definitely have to show you how to hide your token.', 'start': 1112.681, 'duration': 2.882}, {'end': 1121.146, 'text': 'But if you want to do that right now, check out my video already about the sort of .env node package.', 'start': 1115.803, 'duration': 5.343}, {'end': 1122.867, 'text': "That's what I'm going to use in this series as well.", 'start': 1121.166, 'duration': 1.701}, {'end': 1123.107, 'text': 'All right.', 'start': 1122.887, 'duration': 0.22}, {'end': 1123.888, 'text': 'Thanks, everybody.', 'start': 1123.408, 'duration': 0.48}, {'end': 1124.548, 'text': 'See you soon.', 'start': 1124.088, 'duration': 0.46}, {'end': 1125.089, 'text': 'Make your bots.', 'start': 1124.588, 'duration': 0.501}, {'end': 1125.629, 'text': 'Beep, beep.', 'start': 1125.229, 'duration': 0.4}, {'end': 1126.289, 'text': 'Beep, beep.', 'start': 1125.929, 'duration': 0.36}, {'end': 1126.83, 'text': "I'm a sheep.", 'start': 1126.309, 'duration': 0.521}, {'end': 1128.691, 'text': 'Goodbye.', 'start': 1127.93, 'duration': 0.761}], 'summary': 'Discord bot series, share practical/creative bots, join discord, hide token with .env node package.', 'duration': 53.534, 'max_score': 1075.157, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM1075157.jpg'}], 'start': 875.724, 'title': 'Creating interactive bots and discord bot series highlights', 'summary': "Delves into creating interactive bots, such as the magic 8-ball bot and exploring features of the distream bot. it emphasizes the use of discord api and provides insights on the coding train community's creations. additionally, it covers setting up a discord bot, user engagement for suggestions and questions, and hints at future content, including token security and using the .env node package.", 'chapters': [{'end': 1037.549, 'start': 875.724, 'title': 'Creating interactive bots', 'summary': "Discusses creating interactive bots, including making a magic 8-ball bot and exploring features of the distream bot. it also emphasizes the use of discord api and provides insights on the coding train community's creations.", 'duration': 161.825, 'highlights': ['Creating a Magic 8-Ball bot allows users to ask questions and receive random pre-made replies, providing an interactive experience.', 'Exploring the features of the Distream bot, such as using commands like exclamation point ping and user info, demonstrates practical bot functionalities and metadata retrieval.', 'The chapter emphasizes the diverse possibilities of creating bots and encourages exploration of creative ideas using the Discord API.', 'The Distream Bot, created by Coby and David, serves as a bot and chat manager for streamers within the Coding Train community, showcasing collaborative creations and community involvement.']}, {'end': 1128.691, 'start': 1037.829, 'title': 'Discord bot series highlights', 'summary': 'Covers setting up a discord bot and encourages user engagement for suggestions and questions, while also hinting at future content including hiding tokens and utilizing the .env node package.', 'duration': 90.862, 'highlights': ['The chapter emphasizes the setup process for a Discord bot and encourages user engagement for suggestions and questions, while also hinting at future content including hiding tokens and utilizing the .env node package.', 'The speaker expresses excitement about the potential for various types of bots, such as Discord bots, poetry bots, creative arts bots, and more, demonstrating a wide range of applications for bot creation.', 'The transcript mentions the availability of additional resources on a web page associated with the video, allowing users to link documentation or information about their bot online, fostering a sense of community and sharing among bot creators.', 'The speaker briefly touches on the option to hide tokens, providing a teaser for future content and indicating the use of the .env node package, adding a layer of security and hinting at advanced bot development techniques.']}], 'duration': 252.967, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/8k-zyUyuvlM/pics/8k-zyUyuvlM875724.jpg', 'highlights': ['Creating a Magic 8-Ball bot allows users to ask questions and receive random pre-made replies, providing an interactive experience.', 'Exploring the features of the Distream bot, such as using commands like exclamation point ping and user info, demonstrates practical bot functionalities and metadata retrieval.', 'The chapter emphasizes the diverse possibilities of creating bots and encourages exploration of creative ideas using the Discord API.', 'The Distream Bot, created by Coby and David, serves as a bot and chat manager for streamers within the Coding Train community, showcasing collaborative creations and community involvement.', 'The chapter emphasizes the setup process for a Discord bot and encourages user engagement for suggestions and questions, while also hinting at future content including hiding tokens and utilizing the .env node package.', 'The speaker expresses excitement about the potential for various types of bots, such as Discord bots, poetry bots, creative arts bots, and more, demonstrating a wide range of applications for bot creation.', 'The transcript mentions the availability of additional resources on a web page associated with the video, allowing users to link documentation or information about their bot online, fostering a sense of community and sharing among bot creators.', 'The speaker briefly touches on the option to hide tokens, providing a teaser for future content and indicating the use of the .env node package, adding a layer of security and hinting at advanced bot development techniques.']}], 'highlights': ['The chapter emphasizes the setup process for a Discord bot and encourages user engagement for suggestions and questions, while also hinting at future content including hiding tokens and utilizing the .env node package.', "The process of installing discord.js is demonstrated using the command 'npm install discord.js', adding it as a dependency in package.json.", 'The process of customizing a Discord bot to reply to specific messages in a particular channel by copying the channel ID. The user explains the process of copying the channel ID by enabling developer mode in Discord settings and obtaining the ID through a right-click option.', 'The chapter emphasizes the diverse possibilities of creating bots and encourages exploration of creative ideas using the Discord API.', "Implementing random message selection from an array of replies to add variety to the bot's responses. The user creates an array of replies and demonstrates the implementation of random message selection to add variety to the bot's responses.", 'The speaker briefly touches on the option to hide tokens, providing a teaser for future content and indicating the use of the .env node package, adding a layer of security and hinting at advanced bot development techniques.', 'Creating a Magic 8-Ball bot allows users to ask questions and receive random pre-made replies, providing an interactive experience.', 'Exploring the features of the Distream bot, such as using commands like exclamation point ping and user info, demonstrates practical bot functionalities and metadata retrieval.', 'The author emphasizes the need for Node installed and terminal access to proceed with creating a Discord bot.', 'The chapter covers setting up a Node project to create a Discord bot, requiring Node installed and terminal access, and using NPM to initiate the project with default settings.']}