Фоновые задачи в Python, проверьте уже отправленные данные - PullRequest
0 голосов
/ 05 мая 2020

У меня вопрос к знатокам. Я создаю фоновые задачи для своего бота 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)```

1 Ответ

0 голосов
/ 06 мая 2020

Проведя небольшое исследование, я узнал, как это сделать с помощью MySQL. Так что для этого больше не нужны ответы.

...