I’m making a discord bot that sends a message with two buttons. Both buttons sends a message with a picture/gif when pressed. One of them works but the other one gives an error:
JavaScript
x
3
1
raise NotFound(response, data)
2
discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction
3
Here is the full code:
JavaScript
1
123
123
1
import os
2
3
import discord
4
from discord.ext import commands
5
from discord.ui import Button
6
from discord.ui import View
7
from dotenv import load_dotenv
8
import random
9
10
intents = discord.Intents.default()
11
intents.message_content = True
12
13
load_dotenv()
14
TOKEN = os.getenv('Sommer_Challenge_2022_TOKEN')
15
16
bot = commands.Bot(command_prefix=';', intents=intents, help_command=None)
17
18
channel = bot.get_channel(channel id here)
19
20
#facts about sea and beach
21
#fakta om hav og strand
22
fact1 = ('Verdens længste strand hedder "Praia Do Cassino". Den ligger i brasilien og er 241 km lang.🏖️')
23
fact2 = ('Havet dækker omkring 71% af jordens overflade.🌊')
24
fact3 = ('Ca. 73% af folk der besøger stranden, går i vandet.🛀')
25
fact4 = ('Der udledes omkring 8-10 tons plastik i havet hvert år. Det svarer til ca. 375.000 halvliters plastikflasker.')
26
fact5 = ('Over 400 milioner amerikanere går på stranden hvert år.')
27
fact6 = ('Det Røde Hav er det salteste hav i verden. Vandet indenholder ca. 60 gram salt pr. liter.🧂')
28
fact7 = ('Ca. 94% af dyrelivet findes havet.🐟')
29
fact8 = ('Man siger at regnskoven er "jordens lunger", men i virkeligheden producere havet mere end 70% af alt ilt.')
30
fact9 = ('Det er solen som gør vandet blåt. Det samme gælder himlen.☀️')
31
fact10 = ('Hvert år dræber hajer mellem fem til ti mennesker. Til gengæld dræber mennesker omkring 100 millioner hajer om året.🦈')
32
fact11 = ('Ved vesterhavet kan man se bunkere fra 2. verdenskrig.')
33
fact12 = ('Verdens største sandslot har en diameter på 32 meter og har en højde på 21 meter.')
34
35
#Scratch games about sea and beach
36
#Scratch spil om hav og strand
37
game_button1 = Button(label="Scratch", url='https://scratch.mit.edu/projects/119134771/')
38
game_button2 = Button(label="Scratch", url='https://scratch.mit.edu/projects/113456625/')
39
game_button3 = Button(label="Scratch", url='https://scratch.mit.edu/projects/20743182/')
40
game_button4 = Button(label="Scratch", url='https://scratch.mit.edu/projects/16250800/')
41
game_button5 = Button(label="Scratch", url='https://scratch.mit.edu/projects/559210446/')
42
game_button6 = Button(label="Scratch", url='https://scratch.mit.edu/projects/73644874/')
43
game_button7 = Button(label="Scratch", url='https://scratch.mit.edu/projects/546214248/')
44
game_button8 = Button(label="Scratch", url='https://scratch.mit.edu/projects/571081880/')
45
46
#tells when bot goes online
47
#fortæller når en bot går online
48
@bot.event
49
async def on_ready():
50
channel = bot.get_channel(channel name here)
51
await channel.send('Jeg er online!')
52
print(f'{bot.user.name} has connected to Discord!')
53
print(f'conected to: {channel}')
54
55
@bot.event
56
async def on_member_join(member):
57
await member.send(f'Hej {member.mention}, velkommen på stranden. Nyd solen!☀️')
58
59
#does stuff when a specific message is recived
60
#gør ting når en bestemt besked er modtaget
61
@bot.event
62
async def on_message(msg):
63
if msg.author != bot.user:
64
65
if msg.content == (';info'):
66
await msg.channel.send(f'{bot.user.mention} er lavet af "username" 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 "username". n Kun et af scratch spillene der er givet link til er lavet af "username" n Piratskibet.dk brugernavn: other username')
67
68
elif msg.content == (';fact'):
69
await msg.channel.send(random.choice([fact1, fact2, fact3, fact5, fact6]))
70
71
elif msg.content == (';game'):
72
view = View()
73
button = random.choice([game_button1, game_button2, game_button3, game_button4, game_button5, game_button6, game_button7, game_button8])
74
view.add_item(button)
75
76
if button != game_button8:
77
await msg.channel.send(view=view)
78
79
else:
80
await msg.channel.send('Det her spil er lavet af "username"', view=view)
81
82
elif 'hello' in msg.content:
83
msg.channel.send(f'hello {msg.author.mention}!')
84
85
elif 'hej' in msg.content:
86
await msg.channel.send(f'hej {msg.author.mention}!')
87
88
elif msg.content == (';choice'):
89
embed = discord.Embed(title="", description="", color=0xc27c0e)
90
file = discord.File(r"C:Usersusernamevs-code-filesSommer_challenge_2022sandslot_før_DESTROY.png", filename="sandslot_før_DESTROY.png")
91
embed.set_image(url="attachment://sandslot_før_DESTROY.png")
92
embed.set_footer(text="Ødelæg sandslottet?")
93
94
button = Button(label="Ødelæg!", style=discord.ButtonStyle.danger)
95
button2 = Button(label="Lad det være", style=discord.ButtonStyle.success)
96
97
view = View()
98
view.add_item(button)
99
view.add_item(button2)
100
101
async def button2_callback(interaction):
102
await msg.delete()
103
embed = discord.Embed(title="", description="", color=0xc27c0e)
104
file = discord.File(r"C:Usersusernamevs-code-filesSommer_challenge_2022sandslot_don't_destroy.png", filename="sandslot_don't_destroy.png")
105
embed.set_image(url="attachment://sandslot_don't_destroy.png")
106
embed.set_footer(text="Ok")
107
await interaction.response.send_message(file=file, embed=embed, view=None, delete_after=6.25)
108
109
async def button_callback(interaction):
110
await msg.delete()
111
embed = discord.Embed(title="", description="", color=0xc27c0e)
112
file = discord.File(r"C:UsersusernamePicturessandslot_destoy.gif", filename="sandcastle_destoy.gif")
113
embed.set_image(url="attachment://sandcastle_destoy.gif")
114
embed.set_footer(text="Sandslottet blev ødelagt")
115
await interaction.response.send_message(file=file, embed=embed, view=None, delete_after=6.25)
116
117
button.callback = button_callback
118
button2.callback = button2_callback
119
120
await msg.channel.send(file=file, embed=embed, view=view, delete_after=5)
121
122
bot.run(TOKEN)
123
Why does this happen?
Advertisement
Answer
With discord API you need to send an initial response within 3 seconds and afterward, you have 15 minutes to send the follow-up message. You should look into deferring. You’re uploading an image that might take some time and you might need to defer the message.
Instead of doing :
Interaction.response.send_message()
Try :
Interaction.response.defer()
asyncio.sleep()
Interaction.followup.send()