karatekhd / nemesis Goto Github PK
View Code? Open in Web Editor NEWOpenGM - Open Source Telegram Group Management Bot written in Python
Home Page: https://opengm.karatek.net
License: GNU General Public License v3.0
OpenGM - Open Source Telegram Group Management Bot written in Python
Home Page: https://opengm.karatek.net
License: GNU General Public License v3.0
Describe the bug
When executing /kang on an animated sticker, the bot will "type" for a short moment, and then nothing happens. It produces the following error in console:
Dec 04 15:21:50 feuerstern startBot.sh[4693]: [2020-12-04 15:21:50,535 | ERROR] No error handlers are registered, logging exception.
Dec 04 15:21:50 feuerstern startBot.sh[4693]: Traceback (most recent call last):
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/home/nemesisbot/Nemesis/tg_bot/modules/stickers.py", line 199, in kang
Dec 04 15:21:50 feuerstern startBot.sh[4693]: emojis=sticker_emoji,
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "<decorator-gen-61>", line 2, in add_sticker_to_set
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/bot.py", line 135, in decorator
Dec 04 15:21:50 feuerstern startBot.sh[4693]: result = func(*args, **kwargs)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/bot.py", line 4124, in add_sticker_to_set
Dec 04 15:21:50 feuerstern startBot.sh[4693]: result = self._post('addStickerToSet', data, timeout=timeout, api_kwargs=api_kwargs)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/bot.py", line 245, in _post
Dec 04 15:21:50 feuerstern startBot.sh[4693]: return self.request.post(f'{self.base_url}/{endpoint}', data=data, timeout=timeout)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/utils/request.py", line 347, in post
Dec 04 15:21:50 feuerstern startBot.sh[4693]: result = self._request_wrapper('POST', url, fields=data, **urlopen_kwargs)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/utils/request.py", line 272, in _request_wrapper
Dec 04 15:21:50 feuerstern startBot.sh[4693]: raise BadRequest(message)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: telegram.error.BadRequest: Stickerset_invalid
Dec 04 15:21:50 feuerstern startBot.sh[4693]: During handling of the above exception, another exception occurred:
Dec 04 15:21:50 feuerstern startBot.sh[4693]: Traceback (most recent call last):
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/usr/lib/python3.6/site-packages/telegram/utils/promise.py", line 77, in run
Dec 04 15:21:50 feuerstern startBot.sh[4693]: self._result = self.pooled_function(*self.args, **self.kwargs)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/chat_action.py", line 38, in command_func
Dec 04 15:21:50 feuerstern startBot.sh[4693]: return func(update, context, *args, **kwargs)
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/home/nemesisbot/Nemesis/tg_bot/modules/stickers.py", line 216, in kang
Dec 04 15:21:50 feuerstern startBot.sh[4693]: tgs_sticker=open("kangsticker.tgs", "rb"),
Dec 04 15:21:50 feuerstern startBot.sh[4693]: File "/home/nemesisbot/Nemesis/tg_bot/modules/stickers.py", line 367, in makepack_internal
Dec 04 15:21:50 feuerstern startBot.sh[4693]: emojis=emoji,
Dec 04 15:21:50 feuerstern startBot.sh[4693]: TypeError: create_new_sticker_set() got multiple values for argument 'emojis'
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The bot adds the sticker to your own pack.
Version information (please complete the following information):
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
The texts in /slap and /runs are partly incorrect in German. Example:
Hey, sieh dich an! Du fliehen vor dem unvermeidlichen Banhammer... Wie süß.
Describe the bug
The RSS module does not parse the feed on https://planet.opensuse.org/global/rss20.xml. It fails with This link is not an RSS Feed link
To Reproduce
Steps to reproduce the behavior:
/rss https://planet.opensuse.org/global/rss20.xml
Expected behavior
The bot shows basic information about the feed file.
Version information (please complete the following information):
Additional context
This problem occurs because the feed file in planet-o.o does not have the correct HTTP Header set (see openSUSE/planet-o-o#21 ). A potential fix for this would be to handle the feedparser.NonXMLContentType
exception, as described in https://feedparser.readthedocs.io/en/latest/character-encoding.html#advanced-encoding.
We need to migrate to the newer api version. See this for more details.
If we start the bot with the new API installed, we get the following:
[2020-09-02 13:13:47,915 | INFO] Owner: 540549815
[2020-09-02 13:13:47,919 | INFO] Co-Owner: 1056208268
/home/nemesisbot/Nemesis/tg_bot/__init__.py:147: TelegramDeprecationWarning: Old Handler API is deprecated - see https://git.io/fxJuV for details
updater = tg.Updater(TOKEN, workers=WORKERS)
[2020-09-02 13:13:47,932 | INFO] Not loading: ['translation', 'sed']
[2020-09-02 13:13:47,933 | INFO] Modules to load: ['admin', 'afk', 'antiflood', 'backups', 'bans', 'blacklist', 'cust_filters', 'disable', 'global_bans', 'lang', 'locks', 'log_channel', 'misc', 'msg_deleting', 'muting', 'notes', 'reporting', 'rss', 'rules', 'userinfo', 'users', 'warns', 'welcome']
/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/handlers.py:55: TelegramDeprecationWarning: RegexHandler is deprecated. See https://git.io/fxJuV for more info
super().__init__(pattern, callback, **kwargs)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: message_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: channel_post_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: edited_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
/home/nemesisbot/Nemesis/tg_bot/modules/blacklist.py:175: TelegramDeprecationWarning: edited_updates is deprecated. See https://git.io/fxJuV for more info
(Filters.text | Filters.command | Filters.sticker | Filters.photo) & Filters.group, del_blacklist, edited_updates=True)
/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/handlers.py:55: TelegramDeprecationWarning: RegexHandler is deprecated. See https://git.io/fxJuV for more info
super().__init__(pattern, callback, **kwargs)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: message_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: channel_post_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
/usr/lib/python3.6/site-packages/telegram/ext/regexhandler.py:121: TelegramDeprecationWarning: edited_updates is deprecated. See https://git.io/fxJuV for more info
edited_updates=edited_updates)
[2020-09-02 13:13:52,155 | INFO] Successfully loaded modules: ['admin', 'afk', 'antiflood', 'backups', 'bans', 'blacklist', 'cust_filters', 'disable', 'global_bans', 'lang', 'locks', 'log_channel', 'misc', 'msg_deleting', 'muting', 'notes', 'reporting', 'rss', 'rules', 'userinfo', 'users', 'warns', 'welcome']
[2020-09-02 13:13:52,158 | INFO] Using long polling.
[2020-09-02 13:14:04,871 | ERROR] An uncaught error was raised while processing the update
Traceback (most recent call last):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in process_update
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in <genexpr>
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/handlers.py", line 45, in check_update
res = self.filters(message)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 88, in __call__
return self.filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 186, in filter
base_output = self.base_filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 88, in __call__
return self.filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 1349, in filter
return update.message is not None or update.edited_message is not None
AttributeError: 'Message' object has no attribute 'message'
[2020-09-02 13:14:04,880 | ERROR] An uncaught error was raised while processing the update
Traceback (most recent call last):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in process_update
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in <genexpr>
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/modules/locks.py", line 74, in check_update
return super().check_update(update) and not (
File "/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/handlers.py", line 45, in check_update
res = self.filters(message)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 88, in __call__
return self.filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 186, in filter
base_output = self.base_filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 88, in __call__
return self.filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 1349, in filter
return update.message is not None or update.edited_message is not None
AttributeError: 'Message' object has no attribute 'message'
[2020-09-02 13:14:04,884 | ERROR] An uncaught error was raised while processing the update
Traceback (most recent call last):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in process_update
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 493, in <genexpr>
for handler in (x for x in self.handlers[group] if x.check_update(update)):
File "/home/nemesisbot/Nemesis/tg_bot/modules/disable.py", line 58, in check_update
if super().check_update(update):
File "/home/nemesisbot/Nemesis/tg_bot/modules/helper_funcs/handlers.py", line 45, in check_update
res = self.filters(message)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 88, in __call__
return self.filter(update)
File "/usr/lib/python3.6/site-packages/telegram/ext/filters.py", line 1349, in filter
return update.message is not None or update.edited_message is not None
AttributeError: 'Message' object has no attribute 'message'
[2020-09-02 13:14:04,888 | ERROR] An uncaught error was raised while processing the update
Traceback (most recent call last):
File "/home/nemesisbot/Nemesis/tg_bot/__main__.py", line 494, in process_update
handler.handle_update(update, self)
TypeError: handle_update() missing 1 required positional argument: 'check_result'
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need the ability to import Rose Chat exports, so it is easier to switch to Nemesis. I am working on this, but since I am more a Java guy some help would be welcome. A Rose chat export looks like this:
{ "bot_id": 609517172, "data": { "admin": { "legacy_admin": false }, "antiflood": { "action": "ban", "action_duration": 0, "flood_limit": 0 }, "blacklists": { "action": "nothing", "action_duration": 0, "default_reason": "", "filters": null, "should_delete": true }, "disabled": { "disabled": null, "should_delete": false }, "filters": { "filters": [ { "data_id": "", "name": "bekommst du rose", "text": "Dankeschön😘", "type": 0 }, { "data_id": "", "name": "es tut mir leid", "text": "okay... alles in Ordnung😘, aber mach es nicht nochmal!", "type": 0 }, { "data_id": "", "name": "friedensbringer", "text": "Wir sind die Friedensbringer der EOS!!!Wir werden gegen Gewalt kämpfen und immer und überall Frieden bringen, weil wir \"Friedensbringer der Eos, Retter der Welt und unglaublich mutige Helden, die in die Geschichte eingehen werden 😇\" sind!", "type": 0 }, { "data_id": "", "name": "ach stimmt ja", "text": "jedem passieren Fehler", "type": 0 }, { "data_id": "", "name": "glücklich", "text": "nein flücklich", "type": 0 }, { "data_id": "", "name": "paulchen", "text": "Total gute Freundin, Lektorin des Buches, Genossin der Aegrosso, Gründerin der KU und tolle Generälin der Allianz Tod oder Lebendig!!!", "type": 0 }, { "data_id": "", "name": "und dir?", "text": "Gut! Danke der Nachfrage.☺️", "type": 0 }, { "data_id": "", "name": "ioannis", "text": "König Griechenlands, General in der Allianz Tod oder Lebendig, Philosoph, ...😎", "type": 0 }, { "data_id": "", "name": "karatek", "text": "Exdiktator, nun ein guter Freund der Friedensbringer,König Südamerikas und cooler General der Allianz Tod oder Lebendig, der nicht immer zur GU kommt😂😉", "type": 0 }, { "data_id": "", "name": "kämpfer", "text": "Wir sind die Friedensbringer der EOS!!!Wir werden gegen Gewalt kämpfen und immer und überall Frieden bringen, weil wir \"Friedensbringer der Eos, Retter der Welt und unglaublich mutige Helden, die in die Geschichte eingehen werden 😇\" sind!", "type": 0 }, { "data_id": "", "name": "severus", "text": "Mein Exfreund und jetzt bester Kumpel, König Grönlands und der Arktis, erfolgreicher General😊😎 der Allianz Tod oder lebendig", "type": 0 }, { "data_id": "", "name": "wetter", "text": "Ist bei euch auch gerade so schönes Wetter?😁☀️", "type": 0 }, { "data_id": "", "name": "danke", "text": "gerne😘", "type": 0 }, { "data_id": "", "name": "gerne", "text": "😊👍", "type": 0 }, { "data_id": "", "name": "hallo", "text": "Einen schönen guten Tag. 😊 Wie geht es dir?", "type": 0 }, { "data_id": "", "name": "klara", "text": "Super Freundin, EOS, Königin Ozeaniens und Generälin der Allianz Tod oder Lebendig", "type": 0 }, { "data_id": "", "name": "lukas", "text": "Nervt er wieder? Wir sind doch ein Team! Er soll sich endlich benehmen!", "type": 0 }, { "data_id": "", "name": "snape", "text": "Mein Exfreund und jetzt bester Kumpel, König Grönlands und der Arktis, erfolgreicher General😊😎🥳 der Allianz Tod oder lebendig", "type": 0 }, { "data_id": "", "name": "haha", "text": "😂🤣", "type": 0 }, { "data_id": "", "name": "hehe", "text": "😂🤣", "type": 0 }, { "data_id": "", "name": "hihi", "text": "😂🤣", "type": 0 }, { "data_id": "", "name": "hoho", "text": "😂🤣", "type": 0 }, { "data_id": "", "name": "jens", "text": "Exdiktator, nun ein guter Freund der Friedensbringer, König Südamerikas und cooler General der Allianz Tod oder Lebendig, der nicht immer zur GU kommt😂😉", "type": 0 }, { "data_id": "", "name": "luna", "text": "Super Freundin, EOS, Königin Ozeaniens und Generälin der Allianz Tod oder Lebendig", "type": 0 }, { "data_id": "", "name": "nein", "text": "schade", "type": 0 }, { "data_id": "", "name": "okay", "text": "ok", "type": 0 }, { "data_id": "", "name": "rose", "text": "Ihr seid ein toller Haufen es freut mich, dass ich bei euch sein darf", "type": 0 }, { "data_id": "", "name": "silo", "text": "cooler Dude, König Nordamerikas und bester Drogendealer nördlich des Äquators", "type": 0 }, { "data_id": "", "name": "tüss", "text": "ok tschüss bis bald, bleib nicht so lange weg!😔😘", "type": 0 }, { "data_id": "", "name": "🤦♂", "text": "Nein lass das...das gibt Kopfschmerzen!!", "type": 0 }, { "data_id": "", "name": "!!!", "text": "!!!!!!!", "type": 0 }, { "data_id": "", "name": "...", "text": "................", "type": 0 }, { "data_id": "", "name": "hi", "text": "Einen schönen guten Tag. 😊 Wie geht es dir?", "type": 0 }, { "data_id": "", "name": "ja", "text": "freut mich", "type": 0 }, { "data_id": "", "name": "ok", "text": "ok", "type": 0 }, { "data_id": "", "name": "👍", "text": "👍", "type": 0 }, { "data_id": "", "name": "💣", "text": "Die Countdown läuft! Bald fliegt Nemesis' Rechenzentrum hoch...😈😈😈", "type": 0 }, { "data_id": "", "name": "😂", "text": "😂", "type": 0 }, { "data_id": "", "name": "😅", "text": "😂", "type": 0 }, { "data_id": "", "name": "😇", "text": "Jaja...erstmal auf unschuldig tun😅😂", "type": 0 }, { "data_id": "", "name": "😔", "text": "Nein nicht traurig sein🥺", "type": 0 }, { "data_id": "", "name": "😘", "text": "Ich will auch einen Kuss!", "type": 0 }, { "data_id": "", "name": "😡", "text": "Wir sind Friedensbringer! Wir dürfen nicht streiten!!!🥺", "type": 0 }, { "data_id": "", "name": "😢", "text": "nicht traurig sein!", "type": 0 }, { "data_id": "", "name": "😤", "text": "So eine Unverschämtheit! Das kannst du dir nicht bieten lassen!", "type": 0 }, { "data_id": "", "name": "😩", "text": "Nicht traurig sein", "type": 0 }, { "data_id": "", "name": "😫", "text": "Nicht verzweifeln...", "type": 0 }, { "data_id": "", "name": "😭", "text": "Nicht traurig sein!🥺", "type": 0 }, { "data_id": "", "name": "😱", "text": "😱", "type": 0 }, { "data_id": "", "name": "🥳", "text": "PAARTYYY🥳🥳🥳🥳🥳", "type": 0 }, { "data_id": "", "name": "🥺", "text": "nicht traurig sein!", "type": 0 }, { "data_id": "", "name": "!", "text": "!!!", "type": 0 } ] }, "greetings": { "goodbye": { "data_id": "", "disable_preview": true, "text": "", "type": 0 }, "kick_after": 0, "mute_for": 0, "mute_mode": "", "mute_text": "", "should_clean": false, "should_delete_service": false, "should_goodbye": true, "should_kick": false, "should_mute": false, "should_welcome": true, "welcome": { "data_id": "", "disable_preview": true, "text": "", "type": 0 } }, "locks": { "lock_warns": false, "locks": { "all": false, "audio": false, "bot": false, "button": false, "command": false, "contact": false, "document": false, "email": false, "emojigame": false, "forward": false, "game": false, "gif": false, "inline": false, "invitelink": false, "location": false, "phone": false, "photo": false, "poll": false, "rtl": false, "sticker": false, "text": false, "url": false, "video": false, "videonote": false, "voice": false }, "whitelisted_url": null }, "notes": { "notes": null, "private_notes": false }, "pins": { "antichannelpin": false }, "reports": { "disable_reports": false }, "rules": { "content": "Die wichtigste Regel:\nSei flücklich!\nEin paar andere Regeln...:\nKein Streit, diese Gruppe heißt nicht einfach nur so Flücklichkeit. Man darf auch niemanden unflücklich machen!", "send_to_chat": false }, "translations": { "lang": "de" }, "warns": { "action": "ban", "action_duration": 0, "warn_limit": 3 } }, "version": 1 }
It already has a function for importing Groupbuttler Backups, so maybe we could use something similar to it.
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
"Follow your dreams, they now the way."
Describe the bug
When marking as afk, the message when back avaliable is sent to other chats in some cases.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A message is sent to group A, where /afk was executed
Version information (please complete the following information):
Additional context
Possible fix may be to save the chat in which /afk is executed in the DB, and access it when the user writes sth. The message could be sent to the chat written in the DB. Problem is, database stuff needs to be changed, making updates complicated. But, as table afk_users doesn't store any persistent data, this should not be a huge issue.
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
"You know that you are running in a hamsterwheel dont you?"
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
Describe the bug
The bot just does not react to messages sent in channels.
To Reproduce
Steps to reproduce the behavior:
/runs
Expected behavior
The bot replies
You know that you are running in a hamsterwheel dont you?
By Luna
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
To check if a variable is equal to one of many values, combine the values into a tuple and check if the variable is contained in
it instead of checking for equality against each of the values. This is faster, less verbose, and more readable.
There are 18 occurrences of this issue in the repository.
See all occurrences on DeepSource → deepsource.io/gh/KaratekHD/Nemesis/issue/PYL-R1714/occurrences/
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
We need to implement the new CallbackContext feature of v12 of Python-Telegram-Bot for this Module - see https://git.io/fxJuV
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.