Sudah saatnya lagi di mana saya tidak tahu lebih jauh ...

Saya memiliki cronjob yaitu: @reboot root /usr/bin/python3 /home/pi/bewaesserung/bewaesserungsBot.py >> /home/pi/bewaesserung/log.txt &

Konten / home/pi/bewaesserung/bewaesserungsbot.py file adalah:

#!/usr/bin/python3

import discord
from discord.ext import commands
import sys
import os
import socket
from datetime import datetime


bot = commands.Bot(command_prefix='!')
ip = 'X.X.X.X'
port = XXXX


f = open("demofile2.txt", "a")
f.write("Now2 the file has more content!")
f.close()


@bot.event
async def on_message(msg):
        if(msg.author == bot.user):
                return

        print(datetime.now().strftime("%m/%d/%Y, %H:%M:%S") + ' new received Message: ' + msg.content)

        try:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, port))
                s.settimeout(20)
                msgToSend = 'do:' + msg.content
                s.send(msgToSend.encode('utf-8'))
                rcv = s.recv(1024).decode()
                print(datetime.now().strftime("%m/%d/%Y, %H:%M:%S") + ' send Back:' + rcv)
                if(rcv):
                          await msg.channel.send(rcv)
        except:
                await msg.channel.send('Timeout!')
                print('Timeout!')

        s.close()


bot.run('NOPE')

Seperti yang Anda lihat, script prints "Now2 file memiliki lebih banyak konten!" ke dalam file demo. Itu berfungsi sejauh ini tetapi Bot Perselisihan tidak dimulai ...

Saya harap seseorang dapat membantu saya dengan itu

0
matthias-schneglberger 2 April 2021, 23:07

1 menjawab

Jawaban Terbaik

Kemungkinan besar crontab dijalankan sebelum Raspberry PI bahkan telah menetapkan koneksi internet. Anda dapat mengaktifkan dan memeriksa log untuk memverifikasi.

Cara sederhana untuk mengatasinya untuk menunggu sampai Anda dapat melakukan ping server sebelum mengeksekusi bot.run

import os
import time

def wait_for_network():
    while os.system("ping -c 1 8.8.8.8") != 0:
        time.sleep(1)
        continue
    return

if __name__ == "__main__":
    wait_for_network()
    bot.run("NOPE")
1
Teejay Bruno 2 April 2021, 20:58