MyBB.de Forum

Normale Version: MyBot
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
(29.01.2020, 18:28)Schnapsnase schrieb: [ -> ]@SvePu
In der Datenbanktabelle "datacache" ist tatsächlich "mybot_remember" enthalten und gefüllt.
Jetzt nicht mehr. Wink 
Soll es das wirklich gewesen sein? Ich lass mich überraschen.

Vielen Dank für Deinen Hinweis!!!

Das ist übrigens nicht bzw. nur indirekt der Fehler. Spätestens beim nächsten aufrufen des Forums (von wem auch immer) wird die Hook global_end ausgeführt und der Cache wieder gefüllt. Du hast mit dem Leeren des Caches nur bewirkt, dass das Plugin sich nicht mehr daran erinnert, wer bereits angeschrieben wurde. Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber für die, die die Funktion (ähnlich wie Schnapsnase) schon einmal aktiviert hatten und der Fehler nun auftritt.

Ich würde es so machen, da dies zu keinerlei Beeinträchtigung des Plugins führt und das Setting wenigstens mal angesprochen wird... Big Grin

Suche in inc/plugins/mybot.php in Zeile 145 nach

PHP-Code:
if (count($diff) == 0

und ändere dies ab zu:

PHP-Code:
if (count($diff) == || $mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no'

Grüße,
itsmeJAY

Edit nach nochmaliger Überlegung:

... meine oben gepostete Variante funktioniert zwar, führt allerdings dazu, dass im Hintergrund trotzdem Code ausgeführt wird weil er nie in die if-Abfrage hier springt und somit nie returnen kann:

PHP-Code:
if ($last_run !== false)
    {
        
$last['date'] = date("j"$last_run['timestamp']);
        
$last['month'] = date("n"$last_run['timestamp']);
        
$last['year'] = date("Y"$last_run['timestamp']);

        
$now['date'] = date("j");
        
$now['month'] = date("n");
        
$now['year'] = date("Y");

        
//Is it time?
        
$diff array_diff_assoc($last$now);

        if (
count($diff) == 0)
            
//Nothing to do
            
return;
    } 


Wenn im Datacache der Eintrag nicht existiert, wird $last_run also false sein und er springt nie in den Funktionsblock und kann somit nie returnen. Somit wird der weitere Code unterhalb der if Abfrage ausgeführt. Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:

PHP-Code:
function mybot_remember()
{
    global 
$cache$mybb$db;
    
    if (
$mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no') {
    return;
    } 

Das führt dazu, dass PHP direkt "stoppt" sobald die Funktion deaktiviert ist und gar nicht irgendwelchen anderen Code ausführt für die E-Mail-Funktion (Remember Funktion). Da freut der Interpreter sich bestimmt das er keine Arbeit für Nüsse machen muss Toungue
(29.01.2020, 21:21)itsmeJAY schrieb: [ -> ]Du hast bestimmt die 1.5 von github (https://github.com/JN-Jones/MyBot/blob/master/inc/plugins/mybot.php)
Hi JAY,
ich kann mich ehrlich gesagt nicht mehr erinnern, wo ich gedownloadet habe. Es wird aber Vers. 1.5 angezeigt. Somit wirst Du wohl Recht haben.

(29.01.2020, 22:46)itsmeJAY schrieb: [ -> ].....Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber......
....Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:

PHP-Code:
function mybot_remember()
{
    global 
$cache$mybb$db;
    
    if (
$mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no') {
    return;
    } 
Ich habe gestern in einem ersten Wutanfall den Eintrag "mybot_remember" aus der Datacache-Tabelle komplett entfernt. Wink
Genügt jetzt Dein o.g. Code in Zeile 127, oder muss ich wieder einen "leeren" Eintrag im Datacache machen?

Zumindest mal vielen Dank für Deine Arbeit und die Info`s!!

Grüße
(30.01.2020, 07:45)Schnapsnase schrieb: [ -> ]
(29.01.2020, 21:21)itsmeJAY schrieb: [ -> ]Du hast bestimmt die 1.5 von github (https://github.com/JN-Jones/MyBot/blob/master/inc/plugins/mybot.php)
Hi JAY,
ich kann mich ehrlich gesagt nicht mehr erinnern, wo ich gedownloadet habe. Es wird aber Vers. 1.5 angezeigt. Somit wirst Du wohl Recht haben.

(29.01.2020, 22:46)itsmeJAY schrieb: [ -> ].....Man kann den Eintrag im Cache natürlich komplett rausnehmen, dann würde es klappen.. Ist allerdings trotzdem unsauber......
....Deshalb, mache es am besten so und füg direkt unter die Funktion in Zeile 127 folgende if-Bedingung ein:

PHP-Code:
function mybot_remember()
{
    global 
$cache$mybb$db;
    
    if (
$mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no') {
    return;
    } 
Ich habe gestern in einem ersten Wutanfall den Eintrag "mybot_remember" aus der Datacache-Tabelle komplett entfernt. Wink
Genügt jetzt Dein o.g. Code in Zeile 127, oder muss ich wieder einen "leeren" Eintrag im Datacache machen?

Zumindest mal vielen Dank für Deine Arbeit und die Info`s!!

Grüße

Durch das Löschen des Caches dürften jetzt erstmal keine Mails mehr versendet werden. Ich würde trotzdem die if Anweisung in Zeile 127 unter die Funktion einfügen (wie oben gepostet) damit auch kein Code mehr ausgeführt wird und er das Setting berücksichtigt. Somit könntest du die Funktion auch wieder aktivieren und deaktivieren ohne dir Sorgen um den Datacache zu machen. Gilt auch für andere die den Bot verwenden.

Grüße
Besten Dank dafür Exclamation 

Grüße
(30.01.2020, 11:41)Schnapsnase schrieb: [ -> ]Besten Dank dafür Exclamation 

Grüße

No problemo
Hallo liebe Gemeinde , ich habe heute den Bot mal installiert, bekomme im ACP die Fehlermeldung

Warning [2] Use of undefined constant MODULE - assumed 'MODULE' (this will throw an Error in a future version of PHP) - Line: 11 - File: admin/modules/user/mybot.php PHP 7.4.14 (Linux)
File Line Function
/admin/modules/user/mybot.php 11 errorHandler->error
/admin/index.php 824 require

Kann mir da einer von euch bitte weiterhelfen

lg Tc4me
Danke selbergelöst 

ändere in der  /admin/modules/user/mybot.php Zeile 8-11
Code:
if(function_exists("myplugins_info"))
    define(MODULE, "myplugins-mybot");
else
    define(MODULE, "user-mybot");

in


/admin/modules/user/mybot.php

Code:
if(function_exists("myplugins_info"))
    define("MODULE", "myplugins-mybot");
else
    define("MODULE", "user-mybot");



Fertig
Hy Gemeinde , nochmals ein Problem das ihr ev auch schon mit dem Bot hattet, GeburtstagsThread bzw Thread bei neuer Registrierung, wird bei mir nicht gemacht, habt ihr ev Erfahrung damit und könnt mir helfen? lg Tc4me
Hallo Leute , so Danke nochmals an Schnapsnase, der mir mit seine Hilfe doch sehr sehr geholfen hat. Alle Tipps durchgearbeitet, der Erfolg : nachdem ich alle Plugins mal deaktiviert habe und nur mal den Mybot installiert habe, funktionierte dieser problemlos! Danach ein nach dem anderen wieder aktiviert und siehe da, es funktioniert alles perfekt! DANKE !!!!!!!!!!!!!!!

Schönen Sonntag lg Tc4me
Hy ItsmeJAY Hy Schnapsnase, sorry das ich euch nerve, also ich habe auch die Version 1.5 installiert und wollte den Rat von ItsmeJAY folgen und in der Zitat : direkt unter die Funktion in Zeile 127

das ein :
PHP-Code:
function mybot_remember()
{
    global $cache$mybb$db;
    
    
if ($mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no') {
    return;
    


[font=Tahoma, Verdana, Arial, sans-serif][font=Monaco, Consolas, Courier, monospace][font=Tahoma, Verdana, Arial, sans-serif]könntet ihr mit zeigen wie der fertige code aussieht ? Bitte

    [/font]
[/font]
[/font]

PHP-Code:
function mybot_remember()
{
    global 
$cache$mybb$db;

    
$last_run $cache->read("mybot_remember");
    if (
$last_run !== false)
    {
        
$last['date'] = date("j"$last_run['timestamp']);
        
$last['month'] = date("n"$last_run['timestamp']);
        
$last['year'] = date("Y"$last_run['timestamp']);

        
$now['date'] = date("j");
        
$now['month'] = date("n");
        
$now['year'] = date("Y");

        
//Is it time?
        
$diff array_diff_assoc($last$now);
    if (count($diff) == || $mybb->settings['mybot_remember'] == || $mybb->settings['mybot_remember'] == 'no'
        
//if (count($diff) == 0)
            //Nothing to do
            
return;
    } 



Ich komme nicht klar damit, wenn ich dass einfüge , ist das Forum Fehler 500 ...
Danke
Also, zunächst einmal zu dem hier:

(17.01.2021, 15:44)tc4me schrieb: [ -> ]Danke selbergelöst 

ändere in der  /admin/modules/user/mybot.php Zeile 8-11
Code:
if(function_exists("myplugins_info"))
define(MODULE, "myplugins-mybot");
else
define(MODULE, "user-mybot");

in


/admin/modules/user/mybot.php

Code:
if(function_exists("myplugins_info"))
define("MODULE", "myplugins-mybot");
else
define("MODULE", "user-mybot");



Fertig

...hat bei mir geklappt! Vielen Dank! Der Fehler aus dem Admin-Bereich ist schon mal weg.

Und zu deinem letzten Post: Bei mir funktioniert der Code. Vor der Änderung hat sich meine Seite totgeladen, sobald ich das Plugin aktiviert habe, aber nach der Anpassung nicht mehr. Du musst einfach nur den untern Code mit dem oberen deines Beitrages ersetzen. So habe ich es zumindest gemacht und nun lädt die Seite wieder, was schon einmal ein gutes Zeichen ist...

Mir fällt aber gerade auf, dass dein Server mit PHP 7.4 läuft und meiner irgendwie noch auf PHP 7.3. Ich taste mich da ran, aber wer weiß. Wenn ich auf PHP 7.4 stelle, funktioniert es bei mir vielleicht auch nicht mehr. Ich werde das mal demnächst testen und dir Bescheid geben.

Bis dahin, mal sehen welches Abendteuer als nächstes auf mich wartet. Wie gesagt, ab PHP 7.x läuft vieles nicht mehr.

Gerade noch mal getestet, also Auto-PN bei Themeneröffnung funktioniert z.B. (habe auch die Github-Version 1.5 genommen, inklusive der in diesem Beitrag genannten Anpassungen).
Jetzt weiß ich übrigens wieso mein Forum vorhin solange geladen hat. Big Grin

Ja, da gingen bereits einige Mails raus und ja, sie haben zur Uhrzeit der Änderung aufgehört.^^

Danke an itsmeJAY für diesen Code!
Seiten: 1 2 3 4 5