Если я правильно понял вопрос, вы хотите подождать, пока пользователи отреагируют на файл, который вы разместили, а затем наградить их за эту реакцию. Я предполагаю, что вы используете discord.py версии 1.0 или выше.
Само фоновое задание, насколько я знаю, не может быть передано никакому контексту - потому что оно не вызывается как комментарий в определенном контексте.
Однако API (https://discordpy.readthedocs.io/en/rewrite/api.html#discord.on_reaction_add) утверждает, что имеется прослушиватель реакций на сообщения, что означает, что вы можете просто использовать
@bot.event
async def on_reaction_add(reaction, user):
#here do some checks on reaction.message and to check that it is actually
#the correct message being reacted too and avoid multiple reactions of one user.
API также сообщит вам, какие проверки вы можете выполнить для сообщения. Вы можете присвоить сообщению определенную подпись, когда вы позволите боту опубликовать его (временная метка вроде time.time()
кажется достаточно хорошей), а затем получить доступ к reaction.message.content
и сравнить его с текущим временем. Для этого я бы изменил вашу фоновую задачу на что-то вроде этого:
async def my_background_task():
await bot.wait_until_ready()
counter = 0
channel = bot.get_channel(id='446782521070321664')
while not bot.is_closed:
counter += 1
mess = "maybe a timestamp"
e = discord.Embed()
e.set_image(url = "some cool image maybe randomly chosen, please no vbucks")
await channel.send(mess, embed = e) #sends a message with embed picture
await asyncio.sleep(420) # task runs every 7 min
тогда содержание сообщения будет просто message
.
Надеюсь, это поможет.