首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >and :如何分组、格式化和发送多个字典

and :如何分组、格式化和发送多个字典
EN

Stack Overflow用户
提问于 2022-01-25 22:18:00
回答 1查看 410关注 0票数 1

您需要在不同的日子发送不同的消息。下面是一个示例输入:

代码语言:javascript
复制
raspisanie = [{'week_day': 'Monday, 'name': 'Lesson 1', 'time': '8:30'}, {'week_day': 'Tuesday', name: 'Lesson 1', 'time': '8:30'}, {'week_day': 'Tuesday', name: 'Lesson 2', 'time': '10:30'}])

我不知道如何每天发一条短信,这样看起来就像这样:

第一条短信:星期一第一课8:30秒短信:星期二8:30第2课10:30

只想到了message.answer内部的循环,但这是不可能的。我将很高兴得到任何帮助)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-31 10:13:36

为了更好地使用,最好将week_day保存为索引。Monday = 0, Tuesday = 1, Wednesday = 2, ... , Sunday = 6。如果您仍然希望将其作为一个单词保存,可以编写一个函数将工作日的名称转换为索引,这不是什么大不了的事情。

代码语言:javascript
复制
import datetime
import asyncio


def get_schedule_for_today(schedule: list, current_day: int) -> list:
    schedule_for_today = []

    for lesson in schedule:
        if lesson['week_day'] == current_day:
            schedule_for_today.append(lesson)

    return schedule_for_today


async def daily_worker():
    schedule = [{'week_day': 0, 'name': 'Lesson 1', 'time': '8:30'},
                {'week_day': 1, 'name': 'Lesson 1', 'time': '8:30'},
                {'week_day': 1, 'name': 'Lesson 2', 'time': '10:30'}]

    schedule_for_today = get_schedule_for_today(schedule, datetime.datetime.today().weekday())
    while True:
        current_hour_minute = datetime.datetime.now().strftime("%H:%M")

        if current_hour_minute == '00:00':
            schedule_for_today = get_schedule_for_today(schedule, datetime.datetime.today().weekday())

        for lesson in schedule_for_today:
            if lesson['time'] == current_hour_minute:
                await bot.send_message(chat_id=100, text=f"{lesson['name']}")

        await asyncio.sleep(60)


if __name__ == '__main__':
    # register new thread to 'executor'
    loop = asyncio.get_event_loop()
    loop.create_task(daily_worker())

    executor.start_polling(dp, loop = loop)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70856394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档