2017-09-08 17 views
1

私のボットがアクセスできるすべてのチャンネルから(スクリプトが実行された日のように)今日送信されたすべてのメッセージのイテラブルを取得しようとしています。操作の.logs_from()のafter属性の値をどのようにフォーマットする必要がありますか?

それは私が私が私がそれをしたいと思い、これは行動するように見えることはできませんしかし.logs_from()after属性を使用しようとされている現状では:これはのちょうど出力リストに思える実行

import discord 
import asyncio 
import time 

client = discord.Client() 

today = time.strftime("%Y-%m-%d") 

@client.event 
async def on_ready(): 
    for i in client.get_all_channels(): 
     async for c in client.logs_from(i, after=today): 
      print(c.content) 

client.run(INSERT_SESSION_KEY) 

ボットがアクセスできるチャンネルのすべてのメッセージ。私はafterの値のための私の入力が正しい形式ではありません、しかし、ドキュメントが単に述べていることを仮定している:

(メッセージまたは日時)の後に - すべてがメッセージを返された後、メッセージや日付がでなければなりません。日付が指定されている場合は、UTC時刻を表すタイムゾーンのない日時でなければなりません。

これは私がやっている印象の下にあったものです。

.logs_from()after属性の値を宣言する適切な方法は誰にでも分かりますか?

+0

時間の代わりに日時オブジェクトを使用してみてください。大雑把な検索[here](https://stackoverflow.com/questions/1937622/convert-date-to-datetime-in-python)では、 'datetime.combine(date.today()、time())'を提案しています。 – squaswin

+1

Perfect 'date.today()'だけを使って今日送られてきたメッセージが、私の必要に応じて動作するため、時刻を含む現在の時刻以降に送信されたメッセージを取得するために働きます。 –

+0

あなたの状況に以下の情報が当てはまるかどうかは分かりません。日時は最終的には時間帯に慣れていなくてはなりませんが、おそらくあなたの入力日時は異なるタイムゾーンから来るでしょうか?その後、振り子図書館が役に立つかもしれません。 –

答えて

1

アドバイスのためにhttps://stackoverflow.com/users/8360823/squaswinに感謝します。 https://stackoverflow.com/users/131187/bill-bellのおかげで、UTCタイムゾーンの違いがわかります。

timeの代わりにdatetimeを使用すると、必要に応じて動作するようです。

は、以下を参照してください。

import discord 
import asyncio 
import datetime 

client = discord.Client() 

@client.event 
async def on_ready(): 
    for i in client.get_all_channels(): 
     async for c in client.logs_from(i, after=date.today()): 
      print(c.content) 

client.run(INSERT_SESSION_KEY) 

上記戻り、今日送信されたすべてのメッセージを。

以下使用して、一日の特定の時間を含めるように作品:

import discord 
import asyncio 
import datetime 

client = discord.Client() 

@client.event 
async def on_ready(): 
    for i in client.get_all_channels(): 
     async for c in client.logs_from(i, after=datetime.now()): 
      print(c.content) 

client.run(INSERT_SESSION_KEY) 

しかし、これらの両方の上記リターンの現在のタイムゾーンを、UTCでの現在の日付を取得するには、以下を使用することができます。

import discord 
import asyncio 
import datetime 

client = discord.Client() 

@client.event 
async def on_ready(): 
    for i in client.get_all_channels(): 
     async for c in client.logs_from(i, after=datetime.utcnow().date()): 
      print(c.content) 

client.run(INSERT_SESSION_KEY) 
関連する問題