Discord.py 当史诗商店的游戏免费时,机器人会发送更新

Discord.py bot send update when a game is free on the epic store

我希望我的 discord 机器人在史诗商店中将游戏列为免费游戏时发送短信。我使用下面的代码来获取游戏的名称,如何在值更新时将其获取到 运行?

编辑:我从 here 中找到了 URL。

import requests
import json

@bot.command(name='free', pass_context=True, aliases=['fr'])
async def free(ctx, message):
 
    try:
        ENDPOINT = "https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions?locale=es-ES&country=ES&allowCountries=ES"
        URL = "https://www.epicgames.com/store/us-US/product/"
        raw_data = requests.get(ENDPOINT)
        raw_data = json.loads(raw_data.content) 
        raw_data = raw_data["data"]["Catalog"]["searchStore"]["elements"]  # Cleans the data
        processed_data = []
        for i in raw_data:
                        try:
                            if i["promotions"]["promotionalOffers"]:
                                game = i["title"] 
                                processed_data.append(game)
                        except TypeError:
                            pass
        await ctx.message.channel.send("**{}** is now free on the Epic store!".format(processed_data[0]))

    except Exception:
        
        pass

是的,这个已经做过很多次了,只需要1.循环scraping检查你要的数据,然后2. 将您的更新发布到 Discord。

要了解如何为您想要的数据抓取 Epic 游戏,您需要了解主要库 bs4(用于解析的 Beautiful Soup 4 HTML)和requests(高级 HTTP 网络)——所以这里有一些非常基本的资源:

对于您的 Discord 发布实施,无需用大锤敲击螺母,查看 Discord webhooks here & here 的这个更简单的实施,基本上需要一个 api 调用。

顺便一提,之前一定要查看网站的服务条款,这样您就可以检查可以抓取哪些数据以及如何使用您抓取的数据。