シナリオ:peonytwitterとdiscordpyを使用してtwitterストリームからdiscordサーバーにライブ更新します。時々、私たちはスポイラーを避けるためにツイートを遅くする必要があります(ツイッターはライブラジオより先です)。グローバルは非同期forループで正しく変更されていません
Iは、実行中のタスク
async def twat(bot,totrack,outputChannel):
ctx = pclient.stream.statuses.filter.post(follow=totrack)
async with ctx as stream:
async for tweet in stream:
...
global tweetdelay
await async.sleep(tweetdelay)
print("tweetdelay is set to {}".format(tweetdelay))
await bot.send_message(outputChannel,embed=em)
bot.loop.create_task(twat(bot,"123,456",Output1))
bot.loop.create_task(twat(bot,"789,1011,1213",Output2))
として私は、既に実行中のタスクにtweetdelay変数を変更することになっている二次機能を有する、流れループにツイート用非同期を有しています。
@commands.command(aliases = ["tweetdelay"])
async def matchmode(self,delay = "0"):
if delay.isdigit() == True:
delay = int(delay)
global tweetdelay
tweetdelay = delay
print(tweetdelay)
matchmode/tweetdelay機能がコマンドを介して配信されると次のツイートが発生したときに、私は、しかし、
を得ます私はまだ得ます
tweetdelayは、だから私は明らかにループの中にグローバル変数を確認する方法を誤って解釈しています0
に設定されています。
私が思った最初の選択肢は、ループを殺し、それに余分なパラメータをtwat(bot、totrack、delay、outputChannel)として与えることによって再起動する方法を考え出すことでしたが、この問題はTwitterの420機能があまりにも頻繁に使用されている場合(例えば遅延を微調整する場合など)、あなたの静かなステータスコードを強化して再接続をブロックします。誰かが私の代わりにやっていなければならないことの正しい方向に微笑んでくれますか?