我正在尝试对一个discord.py机器人进行编程,该机器人可以保存并命名图像网址,然后可以重新调用该图像

时间:2019-07-24 16:27:36

标签: python discord.py discord.py-rewrite

我正在为我和我的朋友创建一个不和谐的bot,并希望能够将该bot作为命令保存图像URL。然后,每当调用该命令时,它将调用显示该图像的已保存图像URL。基本上,如果我们发现一个模因或有趣的图片,我们希望能够使用我们可以记住的名称来对其进行回忆。

示例:

$save dog (image url to dog pic)
Image saved as $dog
$dog
Bot Posts: (image url to dog pic)

我对python有点陌生,我认为制作此机器人将是一种有趣的学习方式。

我已经尝试了一些代码来保存URL,并且可以正常工作,但是我不确定它将代码保存在哪里。我还需要能够删除所有不起作用的链接,或者要替换已经命名的图像URL。我正在使用discord.py重写版本。

感谢您提供的任何帮助!

@bot.command(name='save')
async def save_url(ctx, name, *, link):
    await ctx.send('Saved as: $' + name)

    @bot.command(name=name)
    async def send_url(img):
        await img.send(name)
        await img.send(link)

    @bot.command(name=remove)
    async def get_rid(ctx, rid):
        if rid == name:
            name = None
            await ctx.send("Imaged removed")
        elif rid != name:
            await ctx.send("Image could not be found.")

编辑:

我想我已经找到了一个解决方案,这要感谢@Patrick Haugh,我将图像URL添加到json文件中,并以此方式保存了它们,并更改了图像调用的方式。

现在由$ img(图像URL名称)代替$(图像URL名称) 这是任何其他discord.py人员的代码,请告诉我是否可以做得更好,或有任何批评意见!

def write_json(title, img):
with open('urls.json') as jfile:
    urldict = json.load(jfile)
    urldict[title] = img
with open('urls.json', 'w') as jfile:
    json.dump(urldict, jfile, sort_keys=True, indent=4)

def delete_json(delete):
    try:
        with open('urls.json') as jfile:
            data = json.loads(jfile.read())
            del data[delete]
        with open('urls.json', 'w') as f:
            json.dump(data, f, sort_keys=True)
        y = 'Image' + delete + 'is removed.'
        return y
    except KeyError:
        e = 'Image ' + delete + ' not found!'
        return e


def read_json(title):
    try:
        with open('urls.json') as jfile:
            get_url = json.load(jfile)
            pic = get_url[title]
            return pic
    except KeyError:
        e = 'Image ' + title + ' not found!'
        return e


def read_json_names():
    with open('urls.json') as jfile:
        get_url = json.load(jfile)
        pic = str(get_url.keys())
        if pic == 'dict_keys([])':
            return 'No images saved!'
        else:
            pic = pic.lstrip('dict_keys([')
            pic = pic.rstrip('])')
            return pic

## bot commands ##########################################

@bot.command(name='save')
async def save_url(ctx, name, *, link):
    write_json(name, link)
    await ctx.send('Saved as: $' + name)


@bot.command(name='remove')
async def remove_url(ctx, thing):
    k = delete_json(thing)
    await ctx.send(k)


@bot.command(name='img')
async def call_url(ctx, call):
    p = read_json(call)
    await ctx.send(p)


@bot.command(name='listimg')
async def call_all_urls(ctx):
    m = read_json_names()
    await ctx.send(m)

0 个答案:

没有答案