Strandliv Discord Bot

Indhold

Jeg har lavet en discord bot med python bibloteket “discord.py”. Min bot kan sende facts eller links til scratch spil med temaet “strandliv”. Den kan også sende beskeder med to knapper der har forskellige valgmuligheder. Derefter kan man trykke på en valgmulighed for at se det ske.

Her er et link til discord wikipedia, hvis man ikke ved, hvad det er: https://en.wikipedia.org/wiki/Discord

Her er et link til discord.py siden, hvis man vil vide, hvad det er: https://discordpy.readthedocs.io/en/stable/#

Her er et link til min discord server, hvis man vil prøve min bot (OBS: botten skal være online for at virke. Send mig en dm så jeg kan få den til det) (det kræver også en discord account) mit brugernavn er gust4717g#0612:

https://discord.gg/ACPGHwMuVj

Her er et link til en trailer/skærmoptagelse jeg har lavet af hvad min bot kan:

Opdateringer efter video:

Bot status

Command liste:
;info
;game
;fact
;choice

Her er min kode:


import os

import discord
from discord.ext import commands
from discord.ui import Button
from discord.ui import View
from dotenv import load_dotenv
import random
from random import choice
import asyncio

intents = discord.Intents.default()
intents.message_content = True
intents.members = True
intents.presences = True

load_dotenv()
TOKEN = os.getenv(‘Sommer_Challenge_2022_TOKEN’)

bot = commands.Bot(command_prefix=’;’, intents=intents, help_command=None)

channel = bot.get_channel(996446973076979802)

#facts about sea and beach
#fakta om hav og strand
fact1 = (‘Verdens længste strand hedder “Praia Do Cassino”. Den ligger i brasilien og er 241 km lang.?️’)
fact2 = (‘Havet dækker omkring 71% af jordens overflade.?’)
fact3 = (‘Ca. 73% af folk der besøger stranden, går i vandet.?’)
fact4 = (‘Der udledes omkring 8-10 tons plastik i havet hvert år. Det svarer til ca. 375.000 halvliters plastikflasker.’)
fact5 = (‘Over 400 milioner amerikanere går på stranden hvert år.’)
fact6 = (‘Det Røde Hav er det salteste hav i verden. Vandet indenholder ca. 60 gram salt pr. liter.?’)
fact7 = (‘Ca. 94% af dyrelivet findes havet.?’)
fact8 = (‘Man siger at regnskoven er “jordens lunger”, men i virkeligheden producere havet mere end 70% af alt ilt.’)
fact9 = (‘Det er solen som gør vandet blåt. Det samme gælder himlen.☀️’)
fact10 = (‘Hvert år dræber hajer mellem fem til ti mennesker. Til gengæld dræber mennesker omkring 100 millioner hajer om året.?’)
fact11 = (‘Ved vesterhavet kan man se bunkere fra 2. verdenskrig.’)
fact12 = (‘Verdens største sandslot har en diameter på 32 meter og har en højde på 21 meter.’)

#Scratch games about sea and beach
#Scratch spil om hav og strand
game_button1 = Button(label=’Scratch: “Beach Volleyball”‘, url=’https://scratch.mit.edu/projects/119134771/’)
game_button2 = Button(label=’Scratch: “Beach Simulator 3″‘, url=’https://scratch.mit.edu/projects/113456625/’)
game_button3 = Button(label=’Scratch: “Beach Ball Bash”‘, url=’https://scratch.mit.edu/projects/20743182/’)
game_button4 = Button(label=’Scratch: “The Iso-Beach 2.1″‘, url=’https://scratch.mit.edu/projects/16250800/’)
game_button5 = Button(label=’Scratch: “vibing at sea”‘, url=’https://scratch.mit.edu/projects/559210446/’)
game_button6 = Button(label=’Scratch: “Boats on the sea v0.10″‘, url=’https://scratch.mit.edu/projects/73644874/’)
game_button7 = Button(label=’Scratch: “Sea Turtle Dash”‘, url=’https://scratch.mit.edu/projects/546214248/’)
game_button8 = Button(label=’Scratch: “Stickman Zombie Killer”‘, url=’https://scratch.mit.edu/projects/571081880/’)

#tells when bot goes online
#fortæller når bot går online
@bot.event
async def on_ready():
channel = bot.get_channel(1009125697979166742)
guild = bot.get_guild(1006626534771142676)
await channel.send(‘Jeg er online!’)
print(f'{bot.user.name} has connected to Discord!’)
await bot.change_presence(activity=discord.Game(name=’discord.py program by gust4717g’))
#await bot.change_presence(activity=discord.Watching(name=f’discord server {guild}’))
print(f’conected to: {guild}’)

#sender en besked når nogle tilslutter/forlader serveren
@bot.event
async def on_member_join(member):
channel = bot.get_channel(1009177266514829332)
await member.send(f’Hej {member.mention}, velkommen på stranden. Nyd solen!☀️’)
await channel.send(f'{member.mention} tilsluttede sig stranden. Sig hej.’)

@bot.event
async def on_member_remove(member):
channel = bot.get_channel(1009177266514829332)
await channel.send(f'{member.mention} forlod stranden. Øv.’)

#does stuff when a specific message is recived
#gør ting når en bestemt besked er modtaget
@bot.event
async def on_message(msg):
if msg.guild:
channel = bot.get_channel(1009144759530553485)
if msg.author != bot.user:

if msg.content == (‘;info’):
await msg.channel.send(f'{bot.user.mention} er lavet af “gust4717g” i fobindelse med sommer challenge 2022. \n Hvis du har nogle spøgsmål eller har brug for hjælp, er du velkommen til at sende en dm til “gust4717g”. \n Kun et af scratch spillene der er givet link til er lavet af “gust4717g” \n Piratskibet.dk brugernavn: 1randomDuck’)

elif msg.content == (‘;fact’):
await msg.channel.send(random.choice([fact1, fact2, fact3, fact5, fact6]))

elif msg.content == (‘;game’):
view = View()
button = random.choice([game_button1, game_button2, game_button3, game_button4, game_button5, game_button6, game_button7, game_button8])
view.add_item(button)

if button != game_button8:
await msg.channel.send(view=view)

else:
await msg.channel.send(‘Det her spil er lavet af “gust4717g”‘, view=view)

elif ‘hello’ or ‘Hello’ in msg.content:
await msg.channel.send(f’hello {msg.author.mention}!’)

elif ‘hej’ or ‘Hej’ in msg.content:
await msg.channel.send(f’hej {msg.author.mention}!’)

elif msg.content == (‘;choice’):

async def choice1():
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\sandslot_før_DESTROY.png”, filename=”sandslot_før_DESTROY.png”)
embed.set_image(url=”attachment://sandslot_før_DESTROY.png”)
embed.set_footer(text=”Ødelæg sandslottet?”)

button = Button(label=”Ødelæg!”, style=discord.ButtonStyle.danger)
button2 = Button(label=”Lad det være”, style=discord.ButtonStyle.success)

view = View()
view.add_item(button)
view.add_item(button2)

async def button2_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\sandslot_don’t_destroy.png”, filename=”sandslot_don’t_destroy.png”)
embed.set_image(url=”attachment://sandslot_don’t_destroy.png”)
embed.set_footer(text=”Ok”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(file=file, embed=embed, delete_after=5)

async def button_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\sandslot_destoy.gif”, filename=”sandcastle_destoy.gif”)
embed.set_image(url=”attachment://sandcastle_destoy.gif”)
embed.set_footer(text=”Sandslottet blev ødelagt”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(file=file, embed=embed, delete_after=6.4)

button.callback = button_callback
button2.callback = button2_callback

await msg.delete()
await msg.channel.send(file=file, embed=embed, view=view, delete_after=5)

async def choice2():
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\standard_turtle.gif”, filename=”standard_turtle.gif”)
embed.set_image(url=”attachment://standard_turtle.gif”)
embed.set_footer(text=”Hjælp skilpaden?”)

button = Button(label=”Den klare det selv”, style=discord.ButtonStyle.danger)
button2 = Button(label=”Hjælp den”, style=discord.ButtonStyle.success)

view = View()
view.add_item(button)
view.add_item(button2)

async def button2_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\safe_turtle.gif”, filename=”safe_turtle.gif”)
embed.set_image(url=”attachment://safe_turtle.gif”)
embed.set_footer(text=”Tak”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(file=file, embed=embed, delete_after=7)

async def button_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\none_safe_turtle.gif”, filename=”none_safe_turtle.gif”)
embed.set_image(url=”attachment://none_safe_turtle.gif”)
embed.set_footer(text=”Yoink”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(file=file, embed=embed, delete_after=5)

button.callback = button_callback
button2.callback = button2_callback

await msg.delete()
await msg.channel.send(file=file, embed=embed, view=view, delete_after=5)

async def choice3():
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\sea.png”, filename=”sea.png”)
embed.set_image(url=”attachment://sea.png”)
embed.set_footer(text=”Gå i vandet?”)

button = Button(label=”Ja!”, style=discord.ButtonStyle.danger)
button2 = Button(label=”Nej!”, style=discord.ButtonStyle.success)

view = View()
view.add_item(button)
view.add_item(button2)

async def button2_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
embed.set_footer(text=”Ok”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(embed=embed, delete_after=5)

async def button_callback(interaction):
embed = discord.Embed(title=””, description=””, color=0xc27c0e)
file = discord.File(r”C:\Users\gust4717\vs-code-files\Sommer_challenge_2022\spist_af_haj.gif”, filename=”spist_af_haj.gif”)
embed.set_image(url=”attachment://spist_af_haj.gif”)
embed.set_footer(text=”Ok”)
await interaction.response.defer()
await asyncio.sleep(0.1)
await interaction.followup.send(file=file, embed=embed, delete_after=5)

button.callback = button_callback
button2.callback = button2_callback

await msg.delete()
await msg.channel.send(file=file, embed=embed, view=view, delete_after=5)

choices = [choice1, choice2, choice3]
await choice(choices)()

bot.run(TOKEN)

Billeder

Kategorier

Web: Andet
Seasonal Challenge 2022: Sommer Challenge 2022

Holdet bag projektet

1randomDuck

Opret Pixel pirat

Log ind