1

アンケートを作成できる Discord ボットを作成しています。ユーザーは、ポーリングの長さを引数として指定できます。そのため、5 秒または 10 秒 (またはそれ以上) ごとにメッセージを更新し、投票でユーザーの残り時間を編集したいと考えています。たとえば、3600 秒からのカウントダウンを実装したいのですが、5 秒または 10 秒ごとに、時間が 0 になるまでメッセージを編集する関数を実行します。ボット側のすべてを制御し、多かれ少なかれ方法を知っています。それを実装します。

それで、私が考えたのは、現在の時間が開始時間+ポーリングの期間に等しいときに間隔を空けて停止することです。したがって、rx.interval() を使用してオブザーバブルを作成し、.take_while() のような演算子を使用できます。

これは私のコードです:

import time
import rx
print(rx.__version__) # 3.1.1

started_at = time.time() # Time in seconds
end_at = started_at + 3600 # One hour after
source = rx.interval(5).take_while(time.time() < end_at)

しかし、私は得るAttributeError: 'Observable' object has no attribute 'take_while'

パイプなどに入れる必要があると思います:

from rx import operators as op
sub = source.pipe(op.take_while(time.time() < end_at))

しかし、私は得るTypeError: 'bool' object is not callable

take_while はどのように使用できますか? ありがとうございました!

4

1 に答える 1