sql >> データベース >  >> NoSQL >> MongoDB

MongoDBdiscord.pyを使用したリマインダーコマンド

    質問の下のコメントへの添付:

    ユーザーに通知する時間かどうかを確認するには、datetimeを使用できます モジュール

    import discord
    from discord.ext import commands, tasks
    import pymongo
    from pymongo import MongoClient
    import os
    import asyncio
    import motor
    import motor.motor_asyncio
    
    import datetime
    from datetime import datetime, timedelta
    
    ### MongoDB Variables ###
    mongo_url = os.environ['Mongodb_url']
    cluster = motor.motor_asyncio.AsyncIOMotorClient(str(mongo_url))
    db = cluster['Database']
    collection = db['reminder']
    
    class Reminder(commands.Cog):
        def __init__(self, bot):
            self.bot = bot
            self.reminder_task.start()
    
        def cog_unload(self):
            self.reminder_task.cancel()
    
        @tasks.loop(minutes=1.0)
        async def reminder_task(self):
            reminders = collection.find({})
            for reminder in reminders:
                # reminder should look like this: {"_id": 1234, "GuildID": 1234, "time": datetime_objekt, "msg": "some text"}
                now = datetime.now()
                if now >= reminder:
                    # remind the user 
                    guild = self.client.get_guild(reminder['GuildID'])
                    member = guild.get_member(reminder['_id'])
                    await member.send(f"reminder for {reminder['msg']}")
                
    
    
    
        @commands.Cog.listener()
        async def on_ready(self):
            print('Reminder is Ready.')
    
    
        @commands.command()
        async def remind(self, ctx, time, *, msg):
            """Reminder Command"""
            # like above
            
            # just change this
            ### Time Variables ###
            time_conversion = {"s": 1, "m": 60, "h": 3600, "d": 86400}
            remindseconds = int(time[0]) * time_conversion[time[-1]]
            remindertime = datetime.now() + timedelta(seconds=remindseconds)
    
    
            
    
    
    def setup(bot):
        bot.add_cog(Reminder(bot))
    



    1. mongodbサービスが起動していません

    2. mongoDbでデータの整合性を確保するにはどうすればよいですか?

    3. 2点間のMongoDB印刷距離

    4. RedisINCRの同時実行性