<p><strong>使用回调方法编辑</strong></p>
<p>我知道python和FTP不是discord,但通过查看文档,我发现了如何在discord中发送文件。我编写了以下代码(未经测试)。我添加了一个从FTP服务器随机获取文件的函数,并在on_message函数中调用该函数</p>
<pre><code>import os
import requests
import ftplib
from ftplib import FTP
import random
import discord
client = discord.Client()
ftp = FTP()
ftp.connect(os.getenv('BOP_IP'), 2021)
ftp.login(os.getenv('BOP_UN'), os.getenv('BOP_PW'))
#path='/'
def download_random_file()
file_list = ftp.nlst()
random_file_name = random.choice(file_list)
#download the file
with open(random_file_name, 'wb') as fp:
ftp.retrbinary('RETR {0}'.format(random_file_name), fp.write)
return random_file_name
@client.event
async def on_ready():
print('We have logged in as {0.user}'
.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$gimme'):
file_downloaded = download_random_file()
await message.channel.send(file=discord.File(file_downloaded))
os.unlink(file_downloaded) #Delete the downloaded file
client.run(os.getenv('TOKEN'))
</code></pre>
<p>要优化:</p>
<ul>
<li>确保文件已下载(使用try-catch块)</li>
<li>确保下载的文件是图像(带有MIMETYPE)</li>
</ul>