首页 > 解决方案 > Python中的后台任务,检查已经发送的数据

问题描述

我有一个问题要问这里的专家。我正在为我的 Discord 机器人创建后台任务,并让它按我的意愿工作,但我想实现一个功能,允许我忽略已经发送的数据。我正在使用通过请求请求的数据,因为它会随着时间的推移而变化。

这是我的代码的一部分,它按预期工作,但我不知道如何添加一个部分来检查发送的消息而不是重复它。我设置了 1 分钟进行测试,看看它是否有效,这将在稍后更改。

提前致谢

import discord
import requests
import asyncio
import json
from datetime import datetime, timezone
import math
from discord.ext import commands, tasks
from discord.ext.commands import Bot
import discord.utils
from itertools import cycle

client = discord.Client()
status = (['Scraping VATSIM Data','Anyone online?','What can I show you?', 'Check our social media for updates!'])
@client.event
async def on_ready():
    change_status.start()
    auto_online.start()
    # await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="VATSIM Data!"))
    print('We have logged in as {0.user}'.format(client))
@tasks.loop(minutes=1)
async def auto_online():
    # send request to vatsim data
    t = requests.get('http://cluster.data.vatsim.net/vatsim-data.json').json()
    xy = json.dumps(t)
    s = json.loads(xy)
    channel1 = client.get_channel(692681048798265347)
    # Bookins Data Display
    utc = datetime.now(timezone.utc)
    # Command for displaying ATC online
    online_exists = False
    for item in s['clients']:
        if item['callsign'] in atc:
            online_exists = True
            embed = discord.Embed(colour = discord.Colour.purple())

            embed.set_author(name='VATAdria Online ATC')
            embed.add_field(name='Controller',value=item['realname'],inline=False)
            embed.add_field(name='Position', value=item['callsign'], inline=False)
            embed.add_field(name='Frequency', value=item['frequency'], inline=False)

            await channel1.send( embed=embed)```

标签: pythonbackgroundtaskbotsdiscord

解决方案


在做了一些研究之后,我发现了如何通过 MySQL 做到这一点。所以不再需要这个答案了。


推荐阅读