|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Przesunięty przez: joli 22-01-2009, 19:25 |
Jak automatycznie dodać nowego posta? |
Autor |
Wiadomość |
l0ud
Pomógł: 1 raz Posty: 14
|
Wysłany: 11-06-2006, 19:30 Jak automatycznie dodać nowego posta?
|
|
|
Witam. Mam pewnien problem. Piszę na pewne forum bota, który filtruje nowe tematy. Jeżeli są wulgaryzmy czy np. !!!!! to dopisuje się do tematu i przenosi go do kosza. Mam problem z dokończeniem pewnych funkcji do niego.
Funkcja 1, chodzi o automatyczne odpowiadanie na niewłaściwego posta. Nie wiem, jakie zapytanie(a?) muszę wykonać, jakie zmienne pobrać, aby post bota pojawił się pod tym użytkownika. Patrzałem na modyfikacje mającą na celu dodawanie reklam, ale to zmiany w viewtopic.php.
Funkcja 2, przenoszenie postu do kosza:
Kod: |
function bot_temat_kosz() {
global $sql;
global $user_post;
global $trash_forum_id;
$new_forum_id = $trash_forum_id;
$topic_id = $user_post['id'];
$sql = "UPDATE " . TOPICS_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . READ_HIST_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . POSTS_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
return true;
}
|
$user_post, $trash_forum_id - te zmienne są przygotowane poza funkcją
Czy ten kod będzie działał? |
|
|
|
 |
Gadatliwa Kasia
|
|
|
|
ciaastek

Pomógł: 37 razy Posty: 434
|
Wysłany: 15-06-2006, 11:56
|
|
|
l0ud napisał/a: | Czy ten kod będzie działał? |
Najlepsza metoda to spróbować |
|
|
|
 |
Radek


Pomógł: 955 razy Posty: 4614
|
Wysłany: 15-06-2006, 12:02
|
|
|
l0ud napisał/a: | Funkcja 1, chodzi o automatyczne odpowiadanie na niewłaściwego posta. Nie wiem, jakie zapytanie(a?) muszę wykonać, jakie zmienne pobrać, aby post bota pojawił się pod tym użytkownika. Patrzałem na modyfikacje mającą na celu dodawanie reklam, ale to zmiany w viewtopic.php. |
obejrzyj sobie kod z functions_post.php i posting.php - chodzi o zapytania z INSERT INTO albo zobacz strukture tabel phpbb_posts i phpbb_posts_text
l0ud napisał/a: | Funkcja 2, przenoszenie postu do kosza: |
to torch niedokladne, bo jezeli bot przenosi post do kosza to wywala od razu caly temat...
a co jezeli temat ma np. 150 postow a w 151 napisze jakis wulgaryzm ? Caly temat zostanie przesuniety a nie tlyko jeden post |
|
|
|
 |
l0ud
Pomógł: 1 raz Posty: 14
|
Wysłany: 19-06-2006, 08:53
|
|
|
Skończyłem kod, ale popełniłem pewnie masę błędów Pojawia się błąd MySQL.
Daje cały kod:
Kod: | <?php
//ustawienia
$kom_1 = ':...: <br />Możesz chociaż nie przeklinać w temacie? :mad:';
$kom_2 = 'CapsLock się zaciął? :kijemgo:';
$kom_3 = 'Temat bezpłciowy jak glizda :suchy:<br />Przykro mi';
$kom_4 = 'Więcej ? się nie dało, nie? :dobani:';
$kom_5 = 'Możesz nie krzyczeć?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!';
$kom_6 = 'Ładniej Cię nie nauczyli mówić?! :wsciekly:';
$kom_7 = 'A czasem tag [you] jest tu zabroniony? :chytry:';
$powod_warnu = 'Nieprzestrzeganie regulaminu forum - warn :/';
$ile_ost_p = '3'; // ile ostrzeżeń
$id_bota = '52';
$wulgaryzmy = array(
'cip',
'kurw',
'huj',
'pizd',
'cip',
'jeb',
);
//skrypt
$bot_act = 1;
function wulg_spr($text) {
global $wulgaryzmy;
$i=0;
while($wulgaryzmy[$i]) {
if (stristr($text,$wulgaryzmy[$i])) return true;
$i++;
}
return false;
}
function bot_p_warn() {
global $db;
global $user_post;
global $userdata;
$sql = "UPDATE ". USERS_TABLE ." SET user_wulg_f = ( `user_wulg_f` + 1 ) WHERE user_id = '".$user_post['user']."'";
if ( !($result = $db->sql_query($sql)) ) message_die(GENERAL_ERROR, 'Could not update user_wulg_f', '', __LINE__, __FILE__, $sql);
$userdata['user_wulg_f']++;
global $userdata;
}
function bot_dopisz($text, $warn, $kosz) {
global $board_config, $lang, $db, $phpbb_root_path, $phpEx;
global $userdata, $topic_id, $user_ip, $id_bota;
global $current_time;
global $topic_id;
global $forum_id;
global $ile_ost_p;
global $user_post;
if ($userdata['user_wulg_f'] >= $ile_ost_p) {
bot_warn();
$sql = "UPDATE " . USERS_TABLE . " SET user_wulg = '0' WHERE user_id = '".$user_post['user']."'";
$db->sql_query($sql);
$warn = 1;
}
if ($warn==0) {
$text = $text.'<br /><br />Pisemne ostrzeżenie';
}
else {
$text = $text.'<br /><br />WARN';
}
if ($kosz==1) {
$text = $text.'<br />Kosz';
}
$tmp_c = $current_time + 5;
$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig, user_agent, post_icon, post_expire, post_approve) VALUES ($topic_id, $forum_id, " . $id_bota . ", '', ".$tmp_c.", '127.0.0.1', 1, 1, 1, 0, 'Mosrilla/1.0 (compatible; MSIE 0.0; Windows 92; MyIE1)', 0, 0, 1)";
if ( !$db->sql_query($sql, BEGIN_TRANSACTION) )
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
$post_id = $db->sql_nextid();
$sql = "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, 'Czytałes regulamin?', '', '$text')";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
}
function get_post() {
$temp = array();
global $userdata;
global $topic_id;
$temp['id'] = $topic_id; // topic_id
$temp['temat'] = $HTTP_POST_VARS['subject'];
$temp['temat2'] = '';
$temp['tresc'] = $HTTP_POST_VARS['message'];
$temp['user'] = $userdata['user_id'];
return $temp;
}
function bot_warn() {
global $powod_warnu;
global $sql;
global $user_post;
global $id_bota;
$sql = "INSERT INTO " . WARNINGS_TABLE . " VALUES(NULL, '".$user_post['user']."', '$id_bota', '" . CR_TIME . "', '1', '".$powod_warnu."', '0', '1')";
if ( !$result = $db->sql_query($sql) ) message_die(GENERAL_ERROR, 'Could not insert warning', '', __LINE__, __FILE__, $sql);
}
function bot_temat_kosz() {
global $sql;
global $user_post;
global $trash_forum_id;
$new_forum_id = $trash_forum_id;
$topic_id = $user_post['id'];
$sql = "UPDATE " . TOPICS_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . READ_HIST_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
$sql = "UPDATE " . POSTS_TABLE . " SET forum_id = $new_forum_id WHERE topic_id = $topic_id";
if ( !($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not move forum to trash', '', __LINE__, __FILE__, $sql);
}
return true;
}
$user_post = get_post();
//sprawdzanie
//Przekleństwa - temat
if (wulg_spr($user_post['temat']) && $bot_act == 1) {
bot_warn();
bot_dopisz($kom_1,1,1);
bot_temat_kosz();
$bot_act = 0;
}
if (wulg_spr($user_post['temat_2']) && $bot_act == 1) {
bot_warn();
bot_dopisz($kom_1,1,1);
bot_temat_kosz();
$bot_act = 0;
}
// bezpłciowy temat
$bot_temp = $user_post['temat'];
$bot_temp = str_replace('?','',$bot_temp);
$bot_temp = str_replace('!','',$bot_temp);
$bot_temp = str_replace(':','',$bot_temp);
$bot_temp = str_replace('(','',$bot_temp);
$bot_temp = str_replace(')','',$bot_temp);
$bot_temp = str_replace('.','',$bot_temp);
$bot_temp = str_replace(',','',$bot_temp);
$bot_temp = str_replace(';','',$bot_temp);
$bot_temp = str_replace(' ','',$bot_temp);
$bot_temp = strtolower($bot_temp);
if ($bot_temp == 'pomocy' || $bot_temp == 'pomóżcie' || $bot_temp == 'pomozcie' || $bot_temp == 'help' || $bot_temp == 'co robić' || $bot_temp == 'co robic' || $bot_temp == '') {
if ($bot_act == 1) {
bot_p_warn();
bot_dopisz($kom_3,0,1);
bot_temat_kosz();
$bot_act = 0;
}
}
// CapsLock
$bot_temp = $user_post['tresc'];
if ($bot_temp == strtoupper($bot_temp) && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_2,0,1);
bot_temat_kosz();
}
$bot_temp = $user_post['temat'];
if ($bot_temp == strtoupper($bot_temp) && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_2,0,1);
bot_temat_kosz();
}
// ????
if (stristr($user_post['temat'], '????') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_4,0,1);
bot_temat_kosz();
}
if (stristr($user_post['tresc'], '????') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_4,0,1);
bot_temat_kosz();
}
// !!!!
if (stristr($user_post['temat'], '!!!!') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_5,0,1);
bot_temat_kosz();
}
if (stristr($user_post['tresc'], '!!!!') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_5,0,1);
bot_temat_kosz();
}
// [you]
if (stristr($user_post['temat'], '[you]') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_7,0,0);
}
if (stristr($user_post['tresc'], '[you]') && $bot_act) {
$bot_act = 0;
bot_p_warn();
bot_dopisz($kom_7,0,0);
}
// wulgaryzmy
if (wulg_spr($user_post['tresc']) && $bot_act) {
bot_p_warn();
bot_dopisz($kom_6,0,0);
$bot_act = 0;
}
?>
|
Podczepiłem go do pliku functions_post.php
Kod: | if ( $delete_option_sql != '' )
{
$sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "
WHERE vote_option_id IN ($delete_option_sql)
AND vote_id = $poll_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Error deleting pruned poll options', '', __LINE__, __FILE__, $sql);
}
}
}
$meta = '<meta http-equiv="refresh" content="' . $board_config['refresh'] . ';url=' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">';
$message = $lang['Stored'] . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');
if ($mode == 'newtopic') {
include('robot2_data.php');
}
return false;
} |
Domyślam się że błąd polega na przechwytywaniu zmiennych. Niestety nie mam pojęcia jak zdobyć np. nazwę użytkownika, który pisze aktualnie posta
Proszę o pomoc
Pozdrawiam |
|
|
|
 |
irekk

Pomógł: 283 razy Posty: 2927
|
Wysłany: 19-06-2006, 09:08
|
|
|
Kod: | $userdata['username'] |
|
_________________ Cygantura |
|
|
|
 |
l0ud
Pomógł: 1 raz Posty: 14
|
Wysłany: 19-06-2006, 11:39
|
|
|
zobacz jak to zrobiłem:
Kod: | $temp['id'] = $topic_id;
$temp['temat'] = $HTTP_POST_VARS['subject'];
$temp['temat2'] = '';
$temp['tresc'] = $HTTP_POST_VARS['message'];
$temp['user'] = $userdata['user_id']; |
Czy te zmienne dobrze pobieram? Może jest lepszy sposób?
Kod: | $temp['temat2'] = ''; |
Chodzi o pobranie nazwy opisu tematu(?) to co wpisuje się pod nim wpisuje (przy zakładaniu)
Robot w obecnej wersji ma reagować tylko na nowe tematy |
|
|
|
 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,15 sekundy. Zapytań do SQL: 11 | |
 |
|