HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.05.2023, 20:14
AmaTo
Участник форума
Регистрация: 25.06.2019
Сообщений: 219
С нами: 3624517

Репутация: 105
По умолчанию

Привет всем. Сделал бота розыграшей, все ок запускается работает, но если выигрывает человек с закрытым профилем, багается конкурс ссылаясь на null профиля человека. Можно ли как то запретить участвовать людям с закрытым профилем или вообще сделать запрет чтобы с закрытым профилем нельзя было вступить в группу?

Цитата:
Сообщение от Спойлер  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Column 'winner_username' cannot be null - тут то понятно что не может записать в бд

Exception in thread "OkHttp Dispatcher" java.lang.NullPointerException
 
Ответить с цитированием

  #2  
Старый 02.05.2023, 20:20
Se1dhe
Новичок
Регистрация: 16.03.2019
Сообщений: 0
С нами: 3769794

Репутация: 0
По умолчанию

Цитата:
Сообщение от AmaTo  

Привет всем. Сделал бота розыграшей, все ок запускается работает, но если выигрывает человек с закрытым профилем, багается конкурс ссылаясь на null профиля человека. Можно ли как то запретить участвовать людям с закрытым профилем или вообще сделать запрет чтобы с закрытым профилем нельзя было вступить в группу?
Цитата:
Сообщение от Спойлер  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Column 'winner_username' cannot be null - тут то понятно что не может записать в бд

Exception in thread "OkHttp Dispatcher" java.lang.NullPointerException
Код сохранения в бд?

На каком этапе бот дергает юзера? Конкурс проводится в чате канала, или лично?
 
Ответить с цитированием

  #3  
Старый 02.05.2023, 20:21
AmaTo
Участник форума
Регистрация: 25.06.2019
Сообщений: 219
С нами: 3624517

Репутация: 105
По умолчанию

Цитата:
Сообщение от Se1dhe  

Код сохранения в бд?
Java:


Код:
private
void
saveWinner
(
GAWinner
winner
,
String
player
)
{
Connect
con
=
null
;
PreparedStatement
st
=
null
;
try
{
con
=
L2DatabaseFactory
.
get
(
)
;
st
=
con
.
prepareStatement
(
"REPLACE INTO ga_winners (ga_id,winner_display_name,winner_userId,winner_username,prize_received,place,received_to) VALUES (?,?,?,?,?,?,?)"
)
;
st
.
setInt
(
1
,
winner
.
GA_ID
)
;
st
.
setString
(
2
,
winner
.
displayName
)
;
st
.
setLong
(
3
,
winner
.
userId
)
;
st
.
setString
(
4
,
winner
.
username
)
;
st
.
setInt
(
5
,
winner
.
received
?
1
:
0
)
;
st
.
setInt
(
6
,
winner
.
place
)
;
st
.
setString
(
7
,
player
)
;
st
.
execute
(
)
;
}
catch
(
Exception
e
)
{
_log
.
warning
(
"could not save GA Winner:"
+
e
)
;
e
.
printStackTrace
(
)
;
}
finally
{
Close
.
CS
(
con
,
st
)
;
}
}
Зависает когда определяет победителя.

Проводится в группе
 
Ответить с цитированием

  #4  
Старый 02.05.2023, 20:23
Se1dhe
Новичок
Регистрация: 16.03.2019
Сообщений: 0
С нами: 3769794

Репутация: 0
По умолчанию

Цитата:
Сообщение от AmaTo  

Java:


Код:
private
void
saveWinner
(
GAWinner
winner
,
String
player
)
{
Connect
con
=
null
;
PreparedStatement
st
=
null
;
try
{
con
=
L2DatabaseFactory
.
get
(
)
;
st
=
con
.
prepareStatement
(
"REPLACE INTO ga_winners (ga_id,winner_display_name,winner_userId,winner_username,prize_received,place,received_to) VALUES (?,?,?,?,?,?,?)"
)
;
st
.
setInt
(
1
,
winner
.
GA_ID
)
;
st
.
setString
(
2
,
winner
.
displayName
)
;
st
.
setLong
(
3
,
winner
.
userId
)
;
st
.
setString
(
4
,
winner
.
username
)
;
st
.
setInt
(
5
,
winner
.
received
?
1
:
0
)
;
st
.
setInt
(
6
,
winner
.
place
)
;
st
.
setString
(
7
,
player
)
;
st
.
execute
(
)
;
}
catch
(
Exception
e
)
{
_log
.
warning
(
"could not save GA Winner:"
+
e
)
;
e
.
printStackTrace
(
)
;
}
finally
{
Close
.
CS
(
con
,
st
)
;
}
}
Java:


Код:
public
void
onCommandMessage
(
AbstractTelegramBot
bot
,
Update
update
,
Message
message
,
List

list
)
throws
TelegramApiException
{
String
userName
=
message
.
getFrom
(
)
.
getFirstName
(
)
;
if
(
message
.
getFrom
(
)
.
getUserName
(
)
!=
null
)
{
userName
=
message
.
getFrom
(
)
.
getUserName
(
)
;
}
if
(
!
createdAdmin
.
get
(
)
&&
dbUserService
.
findAll
(
)
.
isEmpty
(
)
)
{
if
(
createdAdmin
.
compareAndSet
(
false
,
true
)
)
{
if
(
dbUserService
.
findById
(
message
.
getFrom
(
)
.
getId
(
)
)
==
null
)
{
dbUserService
.
create
(
message
.
getFrom
(
)
.
getId
(
)
,
userName
,
10
)
;
}
BotUtil
.
sendMessage
(
bot
,
message
,
LocalisationService
.
getString
(
"start.welcomeMessage"
)
,
false
,
false
,
KeyboardBuilder
.
inline
(
)
.
button
(
LocalisationService
.
getString
(
"start.buttonCallbackName"
)
,
"getBonus:"
+
message
.
getFrom
(
)
.
getId
(
)
)
.
row
(
)
.
buttonUrl
(
LocalisationService
.
getString
(
"start.buttonUrlName"
)
,
LocalisationService
.
getString
(
"t.me/se1dhe_dev"
)
)
.
build
(
)
)
;
}
}
else
{
if
(
dbUserService
.
findById
(
message
.
getFrom
(
)
.
getId
(
)
)
==
null
)
{
createdAdmin
.
set
(
true
)
;
dbUserService
.
create
(
message
.
getFrom
(
)
.
getId
(
)
,
userName
,
0
)
;
}
BotUtil
.
sendMessage
(
bot
,
message
,
LocalisationService
.
getString
(
"start.welcomeMessage"
)
,
false
,
false
,
KeyboardBuilder
.
inline
(
)
.
button
(
LocalisationService
.
getString
(
"start.buttonCallbackName"
)
,
"getPrize"
)
.
row
(
)
.
buttonUrl
(
LocalisationService
.
getString
(
"start.buttonUrlName"
)
,
LocalisationService
.
getString
(
"start.buttonUrlData"
)
)
.
build
(
)
)
;
}
}
 
Ответить с цитированием

  #5  
Старый 02.05.2023, 20:27
Se1dhe
Новичок
Регистрация: 16.03.2019
Сообщений: 0
С нами: 3769794

Репутация: 0
По умолчанию

Цитата:
Сообщение от AmaTo  

Привет всем. Сделал бота розыграшей, все ок запускается работает, но если выигрывает человек с закрытым профилем, багается конкурс ссылаясь на null профиля человека. Можно ли как то запретить участвовать людям с закрытым профилем или вообще сделать запрет чтобы с закрытым профилем нельзя было вступить в группу?
Цитата:
Сообщение от Спойлер  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Column 'winner_username' cannot be null - тут то понятно что не может записать в бд

Exception in thread "OkHttp Dispatcher" java.lang.NullPointerException
тебе просто нужно брать userName пользователя. Лучше это делать с проверкой, как на примере выше, а именно:

Java:


Код:
String
userName
=
message
.
getFrom
(
)
.
getFirstName
(
)
;
if
(
message
.
getFrom
(
)
.
getUserName
(
)
!=
null
)
{
userName
=
message
.
getFrom
(
)
.
getUserName
(
)
;
}
т.к. не у всех пользователей установлен @userName
 
Ответить с цитированием

  #6  
Старый 02.05.2023, 20:34
Se1dhe
Новичок
Регистрация: 16.03.2019
Сообщений: 0
С нами: 3769794

Репутация: 0
По умолчанию

Так же, если проводится в группе, то при нажатии на кнопку "участвовать" - нужно проверять юзера на наличие его в бд. если нет - добавлять его в бд и уже после - засовывать его в список участников.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.