Страница 1 из 1

quote.tcl

СообщениеДобавлено: 15 ноя 2010 10:21
Бриллиант
Скрипт quote.tcl 1.3 выводит цитаты с "" как то криво то заменяет их на "{}" то ставит "\" перед, а если добавить """ (три ковычки) то вообще перестаёт работать, такие же косяки и с другими символами.

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 01:03
tvrsh
Замени все
[lrange $res 4 end]
на
[join [lrange $res 4 end]]
и
[lrange $q 4 end]
на
[join [lrange $q 4 end]]

Таким образом текст цитаты мы превратим из списка в строку, что по идее никак не должно сказаться на секурности скрипта.
<@tvrsh> !addquote 1"11"""
<@Info> tvrsh, Цитата добавлена. (номер: 1)
<@tvrsh> !q
<@Info> [1/1] :: 1"11""" [added by tvrsh 15-11-2010 on 23:58:32]
<@tvrsh> !delquote 1
<@Info> Удалена цитата номер 1 :: 1"11""" (added by tvrsh 15-11-2010 on 23:58:32).

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 08:55
Бриллиант
Больше различных цитат надо было протестировать) проблема осталась например если есть кавычки и запятые, да и вообще может перестать работать с обычными кавычками, я не знаю как этот скрипт устроен, но на одной и той же цитате он ведёт себя по разному.

!addquote привет "мэн", как дела
Цитата добавлена. (номер: 2)
!quote
Tcl error [::quote::quote]: list element in quotes followed by "," instead of space


Может быть стоит саму цитату брать в базе в {}? Пробовал вроде работает, но он берёт в скобки только последнюю цитату, при добавление следующей убирал скобки с предыдущих

set wrstr [list $chan $nick!$uhost $qtime \{$text\}]

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 12:03
tvrsh
Проблема была в том, что команды работы со списками(lindex, lrange) применялись к строкам. Подправил скрипт, брать тут: http://www.egghelp.ru/files/332

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 13:19
Бриллиант
Теперь при добавление таких цитат с символами через какое то время стирается база и выходит опять эта ошибка

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 15:29
tvrsh
Бриллиант писал(а):Теперь при добавление таких цитат с символами через какое то время стирается база и выходит опять эта ошибка

Бред какой-то, сама база стираться не может, да и появляться ошибка тоже не может, так как она исправлена.
Показывай .set errorInfo

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 15:55
Бриллиант
!aq привет всем "2""
Цитата добавлена. (номер: 4)
!aq привет всем "2"" d

Tcl error [::quote::addquote]: list element in quotes followed by """ instead of space
.set errorInfo
Currently: list element in quotes followed by """ instead of space
Currently: while executing
Currently: "join $line"
Currently: (procedure "writedata" line 4)
Currently: invoked from within
Currently: "writedata "$quotedir/$quotedata" $qdata"
Currently: (procedure "::quote::addquote" line 28)
Currently: invoked from within
Currently: "::quote::addquote $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"

!q
В базе нет ни одной цитаты.


Присоединил скрипт на пару дней новее версия, но в ней та же беда, скрипт хороший но надо довести до ума.

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 16:57
tvrsh
Надоело мне копаться с этой переделкой оригинального скрипта. Взял исходный скрипт, который работает без ошибок, и прикрутил к нему показ времени и даты добавления цитаты. И стали они одинаковы по функционалу.

Re: quote.tcl

СообщениеДобавлено: 16 ноя 2010 17:54
Бриллиант
Теперь из-за времени, после перезагрузки бот не видит цитаты, и время добавлено только в рандомные

Re: quote.tcl

СообщениеДобавлено: 17 ноя 2010 12:00
tvrsh
Поправил, смотри в предыдущем посте.