minato37103710
@minato37103710

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

jsonがreloadされない

解決したいこと

d.pyでtinydbを使いスパム回数をカウントしてるのですが、
カウントを1追加した後に最新の情報がloadされないです。
どうやればできるでしょうか

発生している問題・エラー

エラーはなしjsonファイルがロードされません

該当するソースコード

import discord
from discord.ext import commands
import glob, random
from tinydb import TinyDB, Query
import asyncio
from tinydb import TinyDB, Query
from tinydb.operations import increment
import json

db=TinyDB('spam.json')

User = Query()

class antispam(commands.Cog):
    def __init__(self, bot):
        self.bot = bot 

    @commands.Cog.listener()
    async def on_message(self,msg):

        spamming_list = []

        if str(msg.author.id) not in spamming_list:

            try:

                spamming_list.append(str(msg.author.id))

                def checki(m):
                    return m.author == msg.author and m.channel == msg.channel

                respa = await self.bot.wait_for('message', timeout=0.6, check=checki)
                if respa:
                    respd = await self.bot.wait_for('message', timeout=0.6, check=checki)
                    if respd:
                        respe = await self.bot.wait_for('message', timeout=0.6, check=checki)
                        if respe:
                            respw= await self.bot.wait_for('message', timeout=0.6, check=checki)
                            if respw:
                                respq = await self.bot.wait_for('message', timeout=0.6, check=checki)

                                def is_me(m):
                                    return m.author == msg.author

                                def bot(m):
                                    return m.author == self.bot.user

                                role=msg.guild.get_role(867046102455943199)
                                logch=self.bot.get_channel(870501783770910720)

                                await msg.author.add_roles(role)

                                if len(db.search(User.name==msg.author.id)) > 0:
                                    pass

                                else: 
                                    db.insert({'name':msg.author.id, 'age':1})

                                db.update(increment('age'), User.name == msg.author.id)
                                await msg.channel.purge(limit=12, check=is_me)
                                mes=await msg.channel.send(f"Stop spamming {msg.author.mention}")
                                await msg.author.send('Please stop spam')
                                await asyncio.sleep(5)
                                await msg.channel.purge(limit=4,check=bot)
                                count=db.search(User.name == msg.author.id)
                                log=discord.Embed(title='spam log')
                                log.add_field(name="spam user",value=f"{msg.author.name}\n{msg.author.id}")
                                log.add_field(name="spam count",value=f"{count[0]['age']}回")
                                await logch.send(embed=log)
                                json.load


                                spamming_list.remove(str(msg.author.id))

            except asyncio.TimeoutError:

                spamming_list.remove(str(msg.author.id))
                return


def setup(bot):
    bot.add_cog(antispam(bot))

自分で試したこと

await logch.send()

の下にjson.loadを入れてみましたが駄目でした

0

1Answer

相対パスが通らないのかもしれません。絶対パスでjsonを読み込むのはどうでしょう?

0Like

Your answer might help someone💌