1
0
mirror of https://github.com/eternnoir/pyTelegramBotAPI.git synced 2023-08-10 21:12:57 +03:00
Commit Graph

1151 Commits

Author SHA1 Message Date
eternnoir
f9c7497c5c Merge branch 'Kondra007-patch-3' into feature-changes20160522 2016-05-23 11:05:14 +08:00
Diego Muñoz Callejo
3413669a23 Added optional connection (aka sending) timeouts to methods that may upload big chunks of data: send_audio, send_voice, send_document, send_sticker and send_video. 2016-05-22 18:35:20 +02:00
Kondra007
1a45b4844a Fixed Travis build (again)
Yeah, I'm really sorry for all this errors, maybe tired a little bit.
2016-05-22 15:47:44 +03:00
Kondra007
8a9d89591b Fixed Travis build errors 2016-05-22 15:44:04 +03:00
Kondra007
234dd8cf9f Edited edit_date field
It's integer, not `Message`
2016-05-22 13:55:54 +03:00
Kondra007
6a98d27f1a Added edited_message to Update object
As of Bot API update 2.1, Update object now has optional edited_message field.
2016-05-22 13:35:21 +03:00
Kondra007
04df139efb Added edit_date to Message object
As of Bot API update 2.1, `Message` object now has optional `edit_date` field.
2016-05-22 13:32:53 +03:00
eternnoir
fbaf88c237 Update version. 2016-05-20 14:41:00 +08:00
eternnoir
3ebc47de8b Add missing title in InlineQueryResultVenue. #165 2016-05-20 14:39:34 +08:00
Pieter van den Ham
8017c8d919 Fix failing build for python 3.3, 3.4 and pypy3 2016-05-19 10:18:00 +02:00
Pieter van den Ham
2545724a6f Fix #164 2016-05-19 10:02:59 +02:00
eternnoir
0c420ee5e4 Add missing title to InlineQueryResultLocation to_json.
Fix #160
2016-05-12 11:09:21 +08:00
Kondra007
fb1052824c Added 06.05.16 updates
* Added the field emoji to the Sticker object. Your bot can now know the emoji a sticker corresponds to.
* Added the field forwarded_from_chat to the Message object for messages forwarded from channels.
2016-05-07 20:24:16 +03:00
eternnoir
3b52e5c49b ReplyKeyboardMarkup support string. 2016-05-03 21:02:46 +08:00
eternnoir
bd513cd343 Merge branch 'master' of github.com:eternnoir/pyTelegramBotAPI 2016-05-01 00:25:28 +08:00
eternnoir
dc1869167d Fix #153 2016-05-01 00:24:54 +08:00
Rafael Medina
94d1b3f7a8 Added missing import for extract_arguments() 2016-04-26 11:16:49 +02:00
eternnoir
0eb21aa673 Fix #138. 2016-04-25 23:54:30 +08:00
Antonio Pitasi
7ec33d43b3 Fixed supper for new/left_chat_member content types 2016-04-24 17:53:13 +02:00
eternnoir
84257b6ba9 Fix typo. 2016-04-23 01:21:45 +08:00
eternnoir
16d4c64b00 Remove duplicated method. 2016-04-19 08:13:37 +08:00
eternnoir
e913635755 fix next_offset is empty will not set bug. 2016-04-17 23:28:47 +08:00
eternnoir
225cbf2c61 Update switch_inline_query is empty not set bug. 2016-04-17 23:21:11 +08:00
Kondra007
e47790ded8 Fixed typo in types.py
"switch_inline_quer" -> "switch_inline_query"
2016-04-17 17:54:01 +03:00
eternnoir
d0666071d8 Fix edit inlinemessage will return bool not Message object. 2016-04-17 10:24:37 +08:00
eternnoir
7490f63f25 Add send_contact 2016-04-16 15:07:52 +08:00
eternnoir
22ab50989e Add answer_callback_query. 2016-04-16 14:53:41 +08:00
eternnoir
1e320a5b0d Add callback query handler. 2016-04-16 14:18:19 +08:00
Kondra007
ae92d1998e Fixed typo in InlineQueryResultArticle 2016-04-15 21:04:08 +03:00
eternnoir
a6d35fd1de Add all inquery types. 2016-04-14 17:09:12 +08:00
eternnoir
016819cd44 Add inline query classes. 2016-04-14 16:57:23 +08:00
eternnoir
036441b8f6 Add new inline type. 2016-04-14 15:50:55 +08:00
eternnoir
228683aeda Add new param for anser inline query. 2016-04-14 15:32:08 +08:00
eternnoir
4fe4061a0f All Updating messages methods done. 2016-04-14 15:17:53 +08:00
eternnoir
f873658aac Fix edit message error. 2016-04-14 15:06:46 +08:00
eternnoir
13327c371a Add editMessageText. 2016-04-14 15:03:07 +08:00
eternnoir
4dc7af71a0 Add bot2.0 new methods. 2016-04-14 14:48:26 +08:00
eternnoir
209764a5d7 Add connect timeout. Fix #108 2016-04-14 14:34:37 +08:00
eternnoir
c1247249c7 Add send venu method. 2016-04-14 13:55:28 +08:00
eternnoir
a6b0e9598c Add inline keyboard test. 2016-04-14 13:35:18 +08:00
eternnoir
7958264d64 Add bot 2.0 markup. 2016-04-14 12:01:17 +08:00
eternnoir
74c3a3545d Update type message to bot2.0 define. 2016-04-14 11:15:58 +08:00
eternnoir
7b007dab99 Add venue to message type. 2016-04-14 11:02:19 +08:00
eternnoir
8316a57845 Add type Venue. 2016-04-14 11:00:33 +08:00
eternnoir
2eb914d329 Add message entity to message. 2016-04-14 10:57:18 +08:00
eternnoir
2449a3ea64 Add MessageEntity. 2016-04-14 10:51:05 +08:00
DrBomb
17184697ea Update util.py
Another typo
2016-03-17 22:17:06 -04:30
DrBomb
78d86752fb Update util.py
Typo
2016-03-17 00:51:02 -04:30
DrBomb
7669781737 Update util.py
Added a regexp method that returns all the text after the command.
2016-03-17 00:48:08 -04:30
eternnoir
292191038f Add disable_notification 2016-02-27 11:17:35 +08:00
Artem Kolesnikov
28417d18af Added ability to set message handler, inline handler, chosen inline handler with method calling 2016-02-20 17:51:14 +05:00
Igor Starikov
e851f37712 answer_inline_query made POST
The default GET produces `414 Request-URI Too Large` response.
2016-02-14 00:08:37 +05:00
ivan tkachenko
5f9cf881e6 __retrieve_updates split into process_new_updates 2016-02-07 23:45:54 +08:00
eternnoir
a74ed6e3ab Update some comment. 2016-01-06 16:59:42 +08:00
eternnoir
38eb2ba833 Add comment. 2016-01-06 15:53:35 +08:00
eternnoir
93dc1cd92e Add comment. 2016-01-06 14:31:21 +08:00
eternnoir
b8f251140d Fix thumb_url must have value. 2016-01-05 22:23:00 +08:00
eternnoir
94f1bbd402 Almost done. 2016-01-05 14:07:47 +08:00
eternnoir
c706a7aba3 Handler done. 2016-01-05 13:18:32 +08:00
eternnoir
c214f8000e Add InlineQueryResultVideo class. 2016-01-05 11:03:05 +08:00
eternnoir
81a201f19f Add InlineQueryResultMpeg4Gif class. 2016-01-05 10:51:33 +08:00
eternnoir
0f0d76ca82 Add InlineQueryResultGif class. 2016-01-05 10:41:32 +08:00
eternnoir
fa6f16ca5e Add InlineQueryResultPhoto class. 2016-01-05 10:24:21 +08:00
eternnoir
a1267a7670 Add InlineQueryResultArticle class. 2016-01-05 09:57:25 +08:00
eternnoir
79c46bccae inline_hanlder done. 2016-01-04 23:10:32 +08:00
eternnoir
e912546680 Add ChosenInlineResult class. 2016-01-04 22:53:08 +08:00
eternnoir
7eeda3bc4d Update update object. 2016-01-04 22:29:04 +08:00
eternnoir
b5680a1c1f Add InlineQuery class. 2016-01-04 22:24:18 +08:00
eternnoir
3a08111f10 Fix hasattr. 2015-12-22 14:26:08 +08:00
eternnoir
eeff4e7bf8 Let message all attribute default be None. #100 2015-12-22 14:18:23 +08:00
eternnoir
c37b3625aa Merge branch 'develop' of github.com:eternnoir/pyTelegramBotAPI into develop 2015-12-22 14:12:51 +08:00
Ivan Lopez
43ad415320 Get and discard all pending updates sent before the first poll of the bot 2015-12-01 15:05:52 +01:00
ivan tkachenko
413f081b19 style unification for method_url in apihelper.py. 2015-11-08 10:30:09 +08:00
eternnoir
7e9f5b09cf Bug #92 fix. 2015-10-26 21:55:04 +08:00
eternnoir
7346326bc3 Fix video's thumb type forgot de_json. 2015-10-17 02:30:22 +08:00
mabitte
5175803d0b * dict.get(key) returns None if key is not in the dictionary
* used the class method's class reference to instantiate type classes
2015-10-15 16:53:59 +02:00
eternnoir
bf9939d40e Fix queue default value. #86 2015-10-13 13:05:38 +08:00
eternnoir
8e9837a587 Merge branch 'develop' 2015-10-12 22:37:17 +08:00
eternnoir
d8effd3f9f New type Chat supported. 2015-10-12 10:36:58 +08:00
Andy Kluger
9e8b11051c Fix NameError in Python 3 2015-10-08 16:46:15 -04:00
Andy Kluger
b9d458e643 Fix AttributeError on Python 3 2015-10-08 16:39:22 -04:00
Pieter
1e6361dd57 Fix #83
Added a `encode('utf8')` statement to support non-ASCII symbols in error log messages.
2015-10-06 22:36:57 +02:00
pieter
117c5a1141 Minor CPU optimization 2015-10-03 12:48:56 +02:00
eternnoir
e7e681928d Fix polling stuch problem. 2015-10-02 23:24:54 +08:00
eternnoir
855ff40070 Fix python3 raise exception error. 2015-10-02 17:08:05 +08:00
pieter
29a42a398b Restored the non-threaded variant 2015-10-02 00:00:54 +02:00
pieter
b801728924 Fix unnecessary raise 2015-10-01 22:43:18 +02:00
pieter
d14e9051d4 Better error handling.
Errors now are re-raised in the Thread polling() was called from.
If none_stop is *not* set, ApiExceptions will cause the calling Thread to halt.
2015-10-01 22:03:54 +02:00
Pieter van den Ham
60ca1751ca WorkerThreads now log ApiExceptions 2015-10-01 11:33:23 +02:00
pieter
941b8ac5d0 Added webhooks support with set_webhook and remove_webhook in the TeleBot class 2015-09-30 18:19:31 +02:00
eternnoir
1c53955d5a Add timeout para for polling method. 2015-09-30 23:18:26 +08:00
惠轶群
2fb2cd6f20 fix race-condition for message_subscribers 2015-09-30 20:46:37 +08:00
pieter
1038d4fafa Added download_file 2015-09-18 20:53:10 +02:00
pieter
fd1f16598b Added File & getFile, including testing 2015-09-18 20:31:29 +02:00
eternnoir
2ca5c0d6f3 Hotfix lambda bug. 2015-09-10 21:27:37 +08:00
eternnoir
e7b4e95fbc Merge remote-tracking branch 'origin/master' into develop 2015-09-09 09:34:13 +08:00
pieter
99f6829ede Fix failing test case in Py2.6 because of using {} instead of {0..9} 2015-09-08 22:34:55 +02:00
pieter
55053fe413 Fixed failing test cases because of iteritems() 2015-09-08 22:31:02 +02:00
pieter
f2971c5d6c Merge branch 'redesign-message-handlers' into 'develop' 2015-09-08 22:22:01 +02:00
pieter
89288b166e Implement parse_mode 2015-09-08 21:51:45 +02:00
pieter
88bd6dcbb0 Updated Logging section in README 2015-09-08 19:56:05 +02:00
pieter
710fc273d6 Better log messages 2015-09-08 19:47:55 +02:00
pieter
9f04f0ece2 Fix "module has no attribute 'logger'" 2015-09-08 18:53:36 +02:00
Pieter van den Ham
cc7ab58ed8 Fixed some typos in the README
Fixed a bug where TeleBot would ignore KeyboardInterrupt events
2015-09-08 17:38:44 +02:00
Pieter van den Ham
f9cbcf9b65 Redesigned message handlers 2015-09-08 10:44:31 +02:00
eternnoir
3a148c6e85 Refactor get_update method. 2015-09-05 21:54:54 +08:00
eternnoir
93aa37768a Add readme & pep8 2015-09-05 18:12:52 +08:00
eternnoir
da729069c2 Add get_updates method. 2015-09-05 18:10:11 +08:00
eternnoir
2d5cb4fd75 Add Update class. 2015-09-05 17:58:53 +08:00
pieter
cf61577e3e Added a string representation (__str__) for JsonDeserializable 2015-09-01 21:55:02 +02:00
pieter
3c8faa155f Created util.py to clean up __init__.py and apihelper.py and updated README accordingly
Fixed failing send_document_by_id and send_photo_by_id
2015-08-31 11:49:03 +02:00
Pieter van den Ham
6f34a22c4b Added an incremental sleep when an error is encountered while polling 2015-08-31 02:14:14 +02:00
97Pedrito
c33c116488 Integrated blocking into polling + updated docs 2015-08-30 18:53:18 +02:00
eternnoir
4ed7be19ad Avoid no hnadler found. 2015-08-23 22:52:20 +08:00
eternnoir
ee4061561e Fix #61 2015-08-21 22:58:48 +08:00
97Pedrito
596df2ef2c Extended error descriptions
They should provide more information about the origin of the failure.
2015-08-19 21:30:44 +02:00
eternnoir
b17831b726 Update Comment. 2015-08-19 18:27:35 +08:00
eternnoir
1517979bf2 Voice bug fix. 2015-08-19 18:25:08 +08:00
eternnoir
c3300af656 New audio,voice supported. 2015-08-19 18:08:01 +08:00
Raúl Jornet Calomarde
b25435f29a Replaced mine_type by mime_type 2015-08-08 23:26:47 +02:00
eternnoir
821a63e3a7 Support new sendVideo API method. 2015-08-01 10:12:15 +08:00
eternnoir
b745088a05 Let thumb option in Sticker. Api chamged. 2015-08-01 09:55:17 +08:00
eternnoir
9f6a3bfb26 next_step_handler done. 2015-07-30 11:02:08 +08:00
eternnoir
a82fece950 Add method. 2015-07-30 09:23:15 +08:00
eternnoir
9219404a9a Merge branch 'sgomez-fix-video-type' into develop 2015-07-26 20:15:57 +08:00
Sergio Gómez
83ab8a39c9 Fix video type class 2015-07-26 11:19:20 +02:00
pieter
20e3f731f7 Added split_string to apihelper.py
Added a warning to send_message to not exceed 5000 characters per message.
Changed send_message to use HTTP POST instead of GET, to stretch the maximum character limit a little more.
2015-07-25 21:31:58 +02:00
pieter
b484baea37 Fix doc error. 2015-07-24 13:56:47 +02:00
pieter
2647777b2b Implemented register_for_reply. Closes #26 2015-07-24 13:52:48 +02:00
pieter
b468e8c943 Moved extract_command and is_command to apihelper.py. 2015-07-24 13:09:27 +02:00
eternnoir
0932e603fb Fix python3 Exception message attribute not found. 2015-07-23 09:14:20 +08:00
eternnoir
ba1693dcf0 Bug fix. 2015-07-22 14:02:16 +08:00
eternnoir
99b82b6219 Add logger. 2015-07-20 09:56:17 +08:00
eternnoir
968d30e246 Merge branch 'master' into develop 2015-07-18 17:35:46 +08:00
Nathanael Farley
edddab8956 Changed __stop_polling from bool to threading.Event(). 2015-07-18 10:27:16 +01:00
eternnoir
6bdc313fa6 Message add forward_from forward_date reply_to_message support. 2015-07-17 14:40:49 +08:00
eternnoir
621b191e8d Fix python3 can not send file by string bug.
bug #40
2015-07-17 09:38:28 +08:00
eternnoir
185b3e007e Polling interval support
issue #38
2015-07-15 11:19:29 +08:00
eternnoir
aeeb94d386 Fix api's document change. 2015-07-15 11:02:30 +08:00
eternnoir
6c8d30b063 Add process_new_message public method for webhook.
issue #36
2015-07-14 13:28:39 +08:00
eternnoir
c1bb900d91 send file, photo ...etc. by ID support. #35 2015-07-14 13:24:32 +08:00
eternnoir
913f01dfe8 Edit confused notice. 2015-07-13 09:07:07 +08:00
eternnoir
7144c79efe Add none_stop flag for polling method. 2015-07-13 09:07:07 +08:00
FrankWang
f6a0037f8d Fix thread pool high cpu usage. 2015-07-08 21:00:46 +08:00
eternnoir
a82f4d780f Support python3 queue 2015-07-04 20:25:02 +08:00
eternnoir
da176b770c Create ThreadPool when creat_thread flag is True. 2015-07-04 19:51:06 +08:00
eternnoir
e095a2ffe9 Message handler support create_threads flag. 2015-07-04 17:20:29 +08:00
eternnoir
3d678707ac Add create_threads flag. 2015-07-04 17:00:42 +08:00
pieter
9b3f5f5ba0 Merge pool-impl branch 2015-07-04 02:42:41 +02:00
pieter
bc181572d9 Merge commit '666ab76' into develop
Merge master.
2015-07-03 19:38:03 +02:00
pieter
e061aa051a Fixed API inconsistency (Message.fromUser -> Message.from_user) 2015-07-03 19:34:02 +02:00
pieter
666ab7609d Fix TeleBot#extract_command where the function previously would incorrectly slice /command@botname 2015-07-03 19:28:04 +02:00
pieter
0af4051dfd First implementation attempt 2015-07-03 19:22:26 +02:00
eternnoir
cff3f778bf fix content_type bug. 2015-07-03 10:14:42 +08:00
eternnoir
6833a16b57 fix sendChatAction return value bug. API's result will be boolean. 2015-07-03 09:58:48 +08:00
eternnoir
8187e6b8fd Add delete_chat_photo and group_chat_created support. 2015-07-03 09:43:26 +08:00
eternnoir
de88217c37 Support chat action in message. 2015-07-03 09:41:11 +08:00
eternnoir
c0d93a3fb9 Remove unuse import. 2015-07-03 09:30:30 +08:00
pieter
523c7d433a Added AsyncTeleBot, an Asynchronous version of TeleBot.
All API calls on this class (except for getUpdates, since that is already done in a separate Thread) are piped through AsyncTask.
2015-07-03 01:52:18 +02:00
pieter
21231a3f01 PEP-8 clean-up. 2015-07-02 23:47:05 +02:00
pieter
47ce846ce1 Added TeleBot#reply_to(message, text)
Added examples dir and an EchoBot sample.
2015-07-02 23:38:11 +02:00
pieter
111ebf5c16 Extended the message_handler decorator.
TeleBot now makes use of the API's getUpdates timeout optional parameter instead of time.sleep. This yields quicker response times.
2015-07-02 22:32:18 +02:00
pieter
bc3e2115ac Made Contact implement JsonDeserializable. 2015-07-02 14:12:10 +02:00
pieter
36ba21643b Resolve merge conflicts. 2015-07-02 13:54:45 +02:00
pieter
86500fc9fa Added some documentation. 2015-07-02 13:43:49 +02:00
eternnoir
1fdf8bd570 Message support contact. 2015-07-02 11:19:38 +08:00
pieter
13133ac5c6 Implemented command decorator. 2015-07-02 04:17:36 +02:00
pieter
b41330774b Renamed ApiError to ApiException (Subclass of Exception) 2015-07-02 01:18:23 +02:00
pieter
be155afcd8 Deleted last unnecessaty json.dumps 2015-07-02 01:16:17 +02:00
pieter
2f8d1ad4ed PEP 8 clean-up. 2015-07-01 22:34:40 +02:00
pieter
a03769adde Created _make_request and removed check_result in apihelper.py for efficiency and consistency improvements.
Created JsonSerializable (previously Jsonable) and JsonDeserializable.
All relevant classes now subclass JsonDeserializable to eliminate unneeded json -> string -> json conversions.
2015-07-01 22:16:13 +02:00
pieter
949dfc0fb0 Fix unnecessary Thread creation when no new messages arrived. 2015-07-01 19:12:12 +02:00
pieter
0068388872 Implemented #17 (with some small adjustments) and ForceReply
Changed apihelper#convert_markup
Constructed the Jsonable abstract class. All subclasses must override Jsonable#to_json.
Made ReplyKeyboardHide, ReplyKeyboardMarkup and ForceReply a subclass of Jsonable to make things less complicated in convert_markup.
2015-07-01 18:56:21 +02:00
pieter
938c98ced1 Merge branch 'develop' of https://github.com/eternnoir/pyTelegramBotAPI
Merge develop to receive the Python3 compatible version of pyTelegramBotAPI.
2015-07-01 18:29:29 +02:00
pieter
b444565b7b Implemented #17 (with some small adjustments) and ForceReply
Changed apihelper#convert_markup
Constructed the Jsonable abstract class. All subclasses must override Jsonable#to_json.
Made ReplyKeyboardHide, ReplyKeyboardMarkup and ForceReply a subclass of Jsonable to make things less complicated in convert_markup.
2015-07-01 18:29:11 +02:00
CongNT
24491f467f make telebot compatible with python3
also two small PEP8 fixes
2015-07-01 09:49:41 +07:00
pieter
759474924d Implemented getUserProfilePhotos (Though I do not see the use of it currently, because bots cannot download photos with the API) 2015-06-30 16:40:44 +02:00
eternnoir
77580e6784 Support ReplyKeyboardMarkup object. 2015-06-30 13:20:44 +08:00
pieter
af02000534 PEP 8 & IntelliJ code clean-up. 2015-06-30 05:54:04 +02:00
pieter
34da2552dd Implemented the offset parameter.
Implemented the offset parameter for the getUpdates API call according to https://core.telegram.org/bots/api#getupdates
In short: the offset is calculated by adding 1 to the id of the last received Update.
Caching messages in a list is now redundant, so the cache is removed. Only the id of the last received Update is kept for future getUpdates calls.
2015-06-30 05:49:35 +02:00
FrankWang
8eda6a4f13 Revert "...actually implemented the offset in TeleBot#get_update now..." 2015-06-30 10:00:19 +08:00
pieter
37ffcdf6a6 ...actually implemented the offset now... 2015-06-30 03:39:36 +02:00
pieter
c9adf52236 Extended the ReplyKeyboardMarkup class to allow easy creation of a complex ReplyKeyboardMarkup (so without the hassle of manipulating json strings directly). 2015-06-30 02:00:47 +02:00
pieter
64811a3960 - Implemented an optional "offset" argument in apihelper.py.
- TeleBot#get_update now makes use of this argument, which improves the efficiency of the method.
- Removed useless req.status_code statement in apihelper.py#send_data
2015-06-30 01:44:14 +02:00
eternnoir
dd0f7ab1d5 Send chat action support. 2015-06-28 17:56:32 +08:00
eternnoir
8898e3b8cc Add some comment. 2015-06-28 17:27:25 +08:00
eternnoir
8e22bbf180 Message support text, audio, document, photo, sticker, video, location. 2015-06-28 17:19:15 +08:00
eternnoir
7c1c982b3f Add try to polling getUpdates. 2015-06-27 22:31:40 +08:00
eternnoir
cd0b85c03c sendLocation method supported. 2015-06-27 22:11:18 +08:00
eternnoir
343b8ebc85 Add ApiError exception. 2015-06-27 21:55:45 +08:00
eternnoir
cc4ff12103 Change telebot polling thread to daemon. fix #2 2015-06-27 10:03:02 +08:00
eternnoir
a62139fafc Add some comment 2015-06-27 02:14:45 +08:00
eternnoir
70b63fddc1 send file methods done. 2015-06-27 01:53:07 +08:00
eternnoir
67aaed4f20 Forward message method done. 2015-06-26 22:35:52 +08:00
eternnoir
b5748b4d1f Add message cache buffer. 2015-06-26 22:16:11 +08:00
eternnoir
b14cf1ecd4 Add TODO to readme. 2015-06-26 21:56:49 +08:00
eternnoir
77948dd027 get updates and polling done. 2015-06-26 18:02:30 +08:00
eternnoir
ba2e1662cd Method getMe done. 2015-06-26 15:46:02 +08:00
eternnoir
b4691a2a3a Refactor requests para change to dict. 2015-06-26 15:19:05 +08:00
eternnoir
518fed5bc1 Add User json convert. 2015-06-26 15:15:30 +08:00
eternnoir
9c3886f332 First Init. 2015-06-26 14:55:13 +08:00