ValueError: I/O hatası

Merhaba ben bir discord botu tasarlıyorum ve bir yerde takıldım. Amacım benim seçtiğim kelimelerden birini mesajda tespit ettiğinde listede bulunan fotoğraflardan birini rastgele seçip discordda yollaması. Sizinle yazdığım kodun bazı yerlerini paylaşıyorum, hatayı söyleyip düzeltmeme yardımcı olursanız çok memnun olurum.

import random
import discord
from discord.ext import commands

fotolar = [discord.File("A:\\mar\\ar.jpg), discord.File("A:\\mar\\at.jpg)]
kelime = ['kedi', 'köpek', 'at']
secili = random.choice(fotolar)

@Bot.event 
async def on_message(message):
    if message.author==Bot.user:
        return

msg = message.content
.
.
.
    if any(word in msg for word in kelime):
        await message.channel.send(files=secili)
.
.

Bu kodu yazdım ve discordda mesaj içinde bu kelimelerden birini görünce ilk seferinde resmi paylaşıyor ancak ikince kez kelimelerden birini görünce ValueError: I/O operation on closed file hatası veriyor. Rica ediyorum yardım edin.

discord gönderdikten sonra dosyayı kapatıyor heralde. Şöyle deneyebilirsiniz belki: fotolara sadece dosya isimlerini yazın, send ile gönderirken discord.File'ı çağırın:

fotolar = ["A:\\mar\\ar.jpg", "A:\\mar\\at.jpg"]

secili = random.choice(fotolar)
...
...

    if ...
         await message.channel.send(file=discord.File(secili))

Bir de eğer tek bir dosya gönderiyorsanız, files= yerine file='i denemeye değer.

Yardımınız için teşekkürler ancak bu sefer TypeError: expected str, bytes or os.PathLike object, not File hatası alıyorum. Tekrar yardım etmeniz mümkün müdür?

Bu hatayı hangi satırda alıyorsunuz, hatanın tamamını atabilir misiniz “Traceback…” diye başlayan kısımdan itibaren? Kodda değişiklik yaptığınız kısımları da aktarabilir misiniz?

import discord
from discord.ext import commands
import random

Bot = commands.Bot('')


@Bot.event
async def on_ready():
print('Hazır')

@Bot.event
async def on_message(message):
if message.author == Bot.user:
    return

isim = ['kedi', 'köpek']
fotolar = [discord.File('D:\\mar\\blmar.jpg', 'D:\\mar\\shcmar.jpg')]
secili = random.choice(fotolar)

if any(word in message.content for word in isim):
    await message.channel.send(file=discord.File(secili))

Bot.run('TOKEN')

yukarıda sizin yardımlarınızla düzelttiğim kod bulunuyor.

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\ataka\PycharmProjects\Discord31bot\venv\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\ataka\PycharmProjects\Discord31bot\main.py", line 22, in on_message
    await message.channel.send(file=discord.File(secili))
  File "C:\Users\ataka\PycharmProjects\Discord31bot\venv\lib\site-packages\discord\file.py", line 73, in __init__
    self.fp = open(fp, 'rb')
TypeError: expected str, bytes or os.PathLike object, not File

Bu da tracebackden itibaren alınan hata.
Tekrardan yardımlarınız için teşekkürler.

Bu kısmı

şu formatta

yani string’lerden oluşan bir liste şeklinde yazabilir misiniz? Maksat fotolar’da sadece dosyaların isimlerini tutmak, discord.File’ı ancak send’i çağırırken işin içine katmak.

Çok teşekkür ederim, iyi akşamlar.