Initial commit
This commit is contained in:
		
							
								
								
									
										168
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,168 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					### Python template
 | 
				
			||||||
 | 
					# Byte-compiled / optimized / DLL files
 | 
				
			||||||
 | 
					__pycache__/
 | 
				
			||||||
 | 
					*.py[cod]
 | 
				
			||||||
 | 
					*$py.class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# C extensions
 | 
				
			||||||
 | 
					*.so
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Distribution / packaging
 | 
				
			||||||
 | 
					.Python
 | 
				
			||||||
 | 
					build/
 | 
				
			||||||
 | 
					develop-eggs/
 | 
				
			||||||
 | 
					dist/
 | 
				
			||||||
 | 
					downloads/
 | 
				
			||||||
 | 
					eggs/
 | 
				
			||||||
 | 
					.eggs/
 | 
				
			||||||
 | 
					lib/
 | 
				
			||||||
 | 
					lib64/
 | 
				
			||||||
 | 
					parts/
 | 
				
			||||||
 | 
					sdist/
 | 
				
			||||||
 | 
					var/
 | 
				
			||||||
 | 
					wheels/
 | 
				
			||||||
 | 
					*.egg-info/
 | 
				
			||||||
 | 
					.installed.cfg
 | 
				
			||||||
 | 
					*.egg
 | 
				
			||||||
 | 
					MANIFEST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PyInstaller
 | 
				
			||||||
 | 
					#  Usually these files are written by a python script from a template
 | 
				
			||||||
 | 
					#  before PyInstaller builds the exe, so as to inject date/other infos into it.
 | 
				
			||||||
 | 
					*.manifest
 | 
				
			||||||
 | 
					*.spec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Installer logs
 | 
				
			||||||
 | 
					pip-log.txt
 | 
				
			||||||
 | 
					pip-delete-this-directory.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Unit test / coverage reports
 | 
				
			||||||
 | 
					htmlcov/
 | 
				
			||||||
 | 
					.tox/
 | 
				
			||||||
 | 
					.coverage
 | 
				
			||||||
 | 
					.coverage.*
 | 
				
			||||||
 | 
					.cache
 | 
				
			||||||
 | 
					nosetests.xml
 | 
				
			||||||
 | 
					coverage.xml
 | 
				
			||||||
 | 
					*.cover
 | 
				
			||||||
 | 
					.hypothesis/
 | 
				
			||||||
 | 
					.pytest_cache/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Translations
 | 
				
			||||||
 | 
					*.mo
 | 
				
			||||||
 | 
					*.pot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Django stuff:
 | 
				
			||||||
 | 
					*.log
 | 
				
			||||||
 | 
					local_settings.py
 | 
				
			||||||
 | 
					db.sqlite3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Flask stuff:
 | 
				
			||||||
 | 
					instance/
 | 
				
			||||||
 | 
					.webassets-cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Scrapy stuff:
 | 
				
			||||||
 | 
					.scrapy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Sphinx documentation
 | 
				
			||||||
 | 
					docs/_build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PyBuilder
 | 
				
			||||||
 | 
					target/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Jupyter Notebook
 | 
				
			||||||
 | 
					.ipynb_checkpoints
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# pyenv
 | 
				
			||||||
 | 
					.python-version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# celery beat schedule file
 | 
				
			||||||
 | 
					celerybeat-schedule
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# SageMath parsed files
 | 
				
			||||||
 | 
					*.sage.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Environments
 | 
				
			||||||
 | 
					.env
 | 
				
			||||||
 | 
					.venv
 | 
				
			||||||
 | 
					env/
 | 
				
			||||||
 | 
					venv/
 | 
				
			||||||
 | 
					ENV/
 | 
				
			||||||
 | 
					env.bak/
 | 
				
			||||||
 | 
					venv.bak/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Spyder project settings
 | 
				
			||||||
 | 
					.spyderproject
 | 
				
			||||||
 | 
					.spyproject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Rope project settings
 | 
				
			||||||
 | 
					.ropeproject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mkdocs documentation
 | 
				
			||||||
 | 
					/site
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mypy
 | 
				
			||||||
 | 
					.mypy_cache/
 | 
				
			||||||
 | 
					### JetBrains template
 | 
				
			||||||
 | 
					# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
 | 
				
			||||||
 | 
					# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# User-specific stuff
 | 
				
			||||||
 | 
					.idea/**/workspace.xml
 | 
				
			||||||
 | 
					.idea/**/tasks.xml
 | 
				
			||||||
 | 
					.idea/**/usage.statistics.xml
 | 
				
			||||||
 | 
					.idea/**/dictionaries
 | 
				
			||||||
 | 
					.idea/**/shelf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Sensitive or high-churn files
 | 
				
			||||||
 | 
					.idea/**/dataSources/
 | 
				
			||||||
 | 
					.idea/**/dataSources.ids
 | 
				
			||||||
 | 
					.idea/**/dataSources.local.xml
 | 
				
			||||||
 | 
					.idea/**/sqlDataSources.xml
 | 
				
			||||||
 | 
					.idea/**/dynamic.xml
 | 
				
			||||||
 | 
					.idea/**/uiDesigner.xml
 | 
				
			||||||
 | 
					.idea/**/dbnavigator.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Gradle
 | 
				
			||||||
 | 
					.idea/**/gradle.xml
 | 
				
			||||||
 | 
					.idea/**/libraries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Gradle and Maven with auto-import
 | 
				
			||||||
 | 
					# When using Gradle or Maven with auto-import, you should exclude module files,
 | 
				
			||||||
 | 
					# since they will be recreated, and may cause churn.  Uncomment if using
 | 
				
			||||||
 | 
					# auto-import.
 | 
				
			||||||
 | 
					# .idea/modules.xml
 | 
				
			||||||
 | 
					# .idea/*.iml
 | 
				
			||||||
 | 
					# .idea/modules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# CMake
 | 
				
			||||||
 | 
					cmake-build-*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Mongo Explorer plugin
 | 
				
			||||||
 | 
					.idea/**/mongoSettings.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# File-based project format
 | 
				
			||||||
 | 
					*.iws
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IntelliJ
 | 
				
			||||||
 | 
					out/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mpeltonen/sbt-idea plugin
 | 
				
			||||||
 | 
					.idea_modules/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# JIRA plugin
 | 
				
			||||||
 | 
					atlassian-ide-plugin.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Cursive Clojure plugin
 | 
				
			||||||
 | 
					.idea/replstate.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Crashlytics plugin (for Android Studio and IntelliJ)
 | 
				
			||||||
 | 
					com_crashlytics_export_strings.xml
 | 
				
			||||||
 | 
					crashlytics.properties
 | 
				
			||||||
 | 
					crashlytics-build.properties
 | 
				
			||||||
 | 
					fabric.properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Editor-based Rest Client
 | 
				
			||||||
 | 
					.idea/httpRequests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										28
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
 | 
				
			||||||
 | 
					    <data-source source="LOCAL" name="db" uuid="e84413d2-0a90-4fdb-a468-47402049bf81">
 | 
				
			||||||
 | 
					      <driver-ref>sqlite.xerial</driver-ref>
 | 
				
			||||||
 | 
					      <synchronize>true</synchronize>
 | 
				
			||||||
 | 
					      <jdbc-driver>org.sqlite.JDBC</jdbc-driver>
 | 
				
			||||||
 | 
					      <jdbc-url>jdbc:sqlite:$PROJECT_DIR$/db.sqlite3</jdbc-url>
 | 
				
			||||||
 | 
					      <driver-properties>
 | 
				
			||||||
 | 
					        <property name="enable_load_extension" value="true" />
 | 
				
			||||||
 | 
					      </driver-properties>
 | 
				
			||||||
 | 
					      <libraries>
 | 
				
			||||||
 | 
					        <library>
 | 
				
			||||||
 | 
					          <url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.20.1.1/sqlite-jdbc-3.20.1.1.jar</url>
 | 
				
			||||||
 | 
					        </library>
 | 
				
			||||||
 | 
					        <library>
 | 
				
			||||||
 | 
					          <url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.20.1.1/xerial-sqlite-license.txt</url>
 | 
				
			||||||
 | 
					        </library>
 | 
				
			||||||
 | 
					        <library>
 | 
				
			||||||
 | 
					          <url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.16.1/sqlite-jdbc-3.16.1.jar</url>
 | 
				
			||||||
 | 
					        </library>
 | 
				
			||||||
 | 
					        <library>
 | 
				
			||||||
 | 
					          <url>file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.16.1/xerial-sqlite-license.txt</url>
 | 
				
			||||||
 | 
					        </library>
 | 
				
			||||||
 | 
					      </libraries>
 | 
				
			||||||
 | 
					    </data-source>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										17
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<component name="InspectionProjectProfileManager">
 | 
				
			||||||
 | 
					  <profile version="1.0">
 | 
				
			||||||
 | 
					    <option name="myName" value="Project Default" />
 | 
				
			||||||
 | 
					    <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
 | 
					      <option name="ignoredPackages">
 | 
				
			||||||
 | 
					        <value>
 | 
				
			||||||
 | 
					          <list size="4">
 | 
				
			||||||
 | 
					            <item index="0" class="java.lang.String" itemvalue="django-compressor-develop" />
 | 
				
			||||||
 | 
					            <item index="1" class="java.lang.String" itemvalue="django-recaptcha-develop" />
 | 
				
			||||||
 | 
					            <item index="2" class="java.lang.String" itemvalue="django-robokassa" />
 | 
				
			||||||
 | 
					            <item index="3" class="java.lang.String" itemvalue="python-dateutil" />
 | 
				
			||||||
 | 
					          </list>
 | 
				
			||||||
 | 
					        </value>
 | 
				
			||||||
 | 
					      </option>
 | 
				
			||||||
 | 
					    </inspection_tool>
 | 
				
			||||||
 | 
					  </profile>
 | 
				
			||||||
 | 
					</component>
 | 
				
			||||||
							
								
								
									
										11
									
								
								.idea/lono.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.idea/lono.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<module type="PYTHON_MODULE" version="4">
 | 
				
			||||||
 | 
					  <component name="NewModuleRootManager">
 | 
				
			||||||
 | 
					    <content url="file://$MODULE_DIR$" />
 | 
				
			||||||
 | 
					    <orderEntry type="inheritedJdk" />
 | 
				
			||||||
 | 
					    <orderEntry type="sourceFolder" forTests="false" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="TestRunnerService">
 | 
				
			||||||
 | 
					    <option name="PROJECT_TEST_RUNNER" value="Unittests" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</module>
 | 
				
			||||||
							
								
								
									
										82
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="JavaScriptSettings">
 | 
				
			||||||
 | 
					    <option name="languageLevel" value="ES6" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="MarkdownProjectSettings" wasCopied="true">
 | 
				
			||||||
 | 
					    <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false">
 | 
				
			||||||
 | 
					      <PanelProvider>
 | 
				
			||||||
 | 
					        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
 | 
				
			||||||
 | 
					      </PanelProvider>
 | 
				
			||||||
 | 
					    </PreviewSettings>
 | 
				
			||||||
 | 
					    <ParserSettings gitHubSyntaxChange="false" emojiShortcuts="0" emojiImages="0">
 | 
				
			||||||
 | 
					      <PegdownExtensions>
 | 
				
			||||||
 | 
					        <option name="ABBREVIATIONS" value="false" />
 | 
				
			||||||
 | 
					        <option name="ANCHORLINKS" value="true" />
 | 
				
			||||||
 | 
					        <option name="ASIDE" value="false" />
 | 
				
			||||||
 | 
					        <option name="ATXHEADERSPACE" value="true" />
 | 
				
			||||||
 | 
					        <option name="AUTOLINKS" value="true" />
 | 
				
			||||||
 | 
					        <option name="DEFINITIONS" value="false" />
 | 
				
			||||||
 | 
					        <option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
 | 
				
			||||||
 | 
					        <option name="FENCED_CODE_BLOCKS" value="true" />
 | 
				
			||||||
 | 
					        <option name="FOOTNOTES" value="false" />
 | 
				
			||||||
 | 
					        <option name="HARDWRAPS" value="false" />
 | 
				
			||||||
 | 
					        <option name="HTML_DEEP_PARSER" value="false" />
 | 
				
			||||||
 | 
					        <option name="INSERTED" value="false" />
 | 
				
			||||||
 | 
					        <option name="QUOTES" value="false" />
 | 
				
			||||||
 | 
					        <option name="RELAXEDHRULES" value="true" />
 | 
				
			||||||
 | 
					        <option name="SMARTS" value="false" />
 | 
				
			||||||
 | 
					        <option name="STRIKETHROUGH" value="true" />
 | 
				
			||||||
 | 
					        <option name="SUBSCRIPT" value="false" />
 | 
				
			||||||
 | 
					        <option name="SUPERSCRIPT" value="false" />
 | 
				
			||||||
 | 
					        <option name="SUPPRESS_HTML_BLOCKS" value="false" />
 | 
				
			||||||
 | 
					        <option name="SUPPRESS_INLINE_HTML" value="false" />
 | 
				
			||||||
 | 
					        <option name="TABLES" value="true" />
 | 
				
			||||||
 | 
					        <option name="TASKLISTITEMS" value="true" />
 | 
				
			||||||
 | 
					        <option name="TOC" value="false" />
 | 
				
			||||||
 | 
					        <option name="WIKILINKS" value="true" />
 | 
				
			||||||
 | 
					      </PegdownExtensions>
 | 
				
			||||||
 | 
					      <ParserOptions>
 | 
				
			||||||
 | 
					        <option name="ADMONITION_EXT" value="false" />
 | 
				
			||||||
 | 
					        <option name="ATTRIBUTES_EXT" value="false" />
 | 
				
			||||||
 | 
					        <option name="COMMONMARK_LISTS" value="true" />
 | 
				
			||||||
 | 
					        <option name="DUMMY" value="false" />
 | 
				
			||||||
 | 
					        <option name="EMOJI_SHORTCUTS" value="true" />
 | 
				
			||||||
 | 
					        <option name="ENUMERATED_REFERENCES_EXT" value="false" />
 | 
				
			||||||
 | 
					        <option name="FLEXMARK_FRONT_MATTER" value="false" />
 | 
				
			||||||
 | 
					        <option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
 | 
				
			||||||
 | 
					        <option name="GFM_TABLE_RENDERING" value="true" />
 | 
				
			||||||
 | 
					        <option name="GITBOOK_URL_ENCODING" value="false" />
 | 
				
			||||||
 | 
					        <option name="GITHUB_LISTS" value="false" />
 | 
				
			||||||
 | 
					        <option name="GITHUB_WIKI_LINKS" value="true" />
 | 
				
			||||||
 | 
					        <option name="HEADER_ID_NO_DUPED_DASHES" value="false" />
 | 
				
			||||||
 | 
					        <option name="JEKYLL_FRONT_MATTER" value="false" />
 | 
				
			||||||
 | 
					        <option name="NO_TEXT_ATTRIBUTES" value="false" />
 | 
				
			||||||
 | 
					        <option name="PARSE_HTML_ANCHOR_ID" value="false" />
 | 
				
			||||||
 | 
					        <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
 | 
				
			||||||
 | 
					      </ParserOptions>
 | 
				
			||||||
 | 
					    </ParserSettings>
 | 
				
			||||||
 | 
					    <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false">
 | 
				
			||||||
 | 
					      <GeneratorProvider>
 | 
				
			||||||
 | 
					        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
 | 
				
			||||||
 | 
					      </GeneratorProvider>
 | 
				
			||||||
 | 
					      <headerTop />
 | 
				
			||||||
 | 
					      <headerBottom />
 | 
				
			||||||
 | 
					      <bodyTop />
 | 
				
			||||||
 | 
					      <bodyBottom />
 | 
				
			||||||
 | 
					    </HtmlSettings>
 | 
				
			||||||
 | 
					    <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="true" isCssTextEnabled="false" isDynamicPageWidth="true">
 | 
				
			||||||
 | 
					      <StylesheetProvider>
 | 
				
			||||||
 | 
					        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
 | 
				
			||||||
 | 
					      </StylesheetProvider>
 | 
				
			||||||
 | 
					      <ScriptProviders />
 | 
				
			||||||
 | 
					      <cssText />
 | 
				
			||||||
 | 
					      <cssUriHistory />
 | 
				
			||||||
 | 
					    </CssSettings>
 | 
				
			||||||
 | 
					    <HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
 | 
				
			||||||
 | 
					    <LinkMapSettings>
 | 
				
			||||||
 | 
					      <textMaps />
 | 
				
			||||||
 | 
					    </LinkMapSettings>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (lono)" project-jdk-type="Python SDK" />
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="ProjectModuleManager">
 | 
				
			||||||
 | 
					    <modules>
 | 
				
			||||||
 | 
					      <module fileurl="file://$PROJECT_DIR$/.idea/lono.iml" filepath="$PROJECT_DIR$/.idea/lono.iml" />
 | 
				
			||||||
 | 
					    </modules>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="VcsDirectoryMappings">
 | 
				
			||||||
 | 
					    <mapping directory="$PROJECT_DIR$" vcs="Git" />
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
							
								
								
									
										103
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					from html import escape
 | 
				
			||||||
 | 
					from random import random
 | 
				
			||||||
 | 
					from time import sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from telegram.error import Unauthorized, TelegramError
 | 
				
			||||||
 | 
					from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
 | 
				
			||||||
 | 
					from telegram import Message, Update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from models import Subscriber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					queue = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def go_away(bot, update: Update):
 | 
				
			||||||
 | 
					    Subscriber(user_id=str(update.message.chat_id))
 | 
				
			||||||
 | 
					    update.message.reply_text('Вы были добавлены')
 | 
				
			||||||
 | 
					    # update.message.reply_text('Пожалуйста, обратитесь к @lono_contactbot')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def unsubscribe(bot, update: Update):
 | 
				
			||||||
 | 
					    Subscriber.deleteBy(user_id=str(update.message.chat_id))
 | 
				
			||||||
 | 
					    update.message.reply_text('Вы были отписаны от бота. Обратитесь к @lono_contactbot за добавлением обратно.')
 | 
				
			||||||
 | 
					    # update.message.reply_text('Пожалуйста, обратитесь к @lono_contactbot')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def msg(bot, update: Update):
 | 
				
			||||||
 | 
					    queue.append(update.message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def task_queue(bot, job):
 | 
				
			||||||
 | 
					    if not queue:
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    m = queue.pop(0)
 | 
				
			||||||
 | 
					    current_chat = str(m.chat_id)
 | 
				
			||||||
 | 
					    uids = set(s.user_id for s in Subscriber.select())
 | 
				
			||||||
 | 
					    if current_chat not in uids:
 | 
				
			||||||
 | 
					        # return m.reply_text('Пожалуйста, обратитесь к @lono_contactbot')
 | 
				
			||||||
 | 
					        Subscriber(user_id=current_chat)
 | 
				
			||||||
 | 
					        m.reply_text('Вы были добавлены')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        uids.remove(current_chat)
 | 
				
			||||||
 | 
					    except KeyError:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for uid in uids:
 | 
				
			||||||
 | 
					        sleep(.05)
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            if m.forward_from or m.forward_from_chat or m.forward_from_message_id or m.forward_signature:
 | 
				
			||||||
 | 
					                m.forward(f'{uid}')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'audio') and m.audio:
 | 
				
			||||||
 | 
					                a = m.audio
 | 
				
			||||||
 | 
					                bot.send_audio(f'{uid}', a.file_id, a.duration, a.performer, a.title, m.caption_html, parse_mode='html')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'document') and m.document:
 | 
				
			||||||
 | 
					                d = m.document
 | 
				
			||||||
 | 
					                bot.send_document(f'{uid}', d.file_id, d.file_name, m.caption_html, parse_mode='html')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'photo') and m.photo:
 | 
				
			||||||
 | 
					                p = m.photo
 | 
				
			||||||
 | 
					                bot.send_photo(f'{uid}', p[-1].file_id, m.caption_html, parse_mode='html')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'sticker') and m.sticker:
 | 
				
			||||||
 | 
					                s = m.sticker
 | 
				
			||||||
 | 
					                bot.send_sticker(f'{uid}', s.file_id)
 | 
				
			||||||
 | 
					            elif hasattr(m, 'video') and m.video:
 | 
				
			||||||
 | 
					                v = m.video
 | 
				
			||||||
 | 
					                bot.send_video(f'{uid}', v.file_id, v.duration, m.caption_html, parse_mode='html')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'voice') and m.voice:
 | 
				
			||||||
 | 
					                v = m.voice
 | 
				
			||||||
 | 
					                bot.send_voice(f'{uid}', v.file_id, v.duration, m.caption_html, parse_mode='html')
 | 
				
			||||||
 | 
					            elif hasattr(m, 'video_note') and m.video_note:
 | 
				
			||||||
 | 
					                vn = m.video_note
 | 
				
			||||||
 | 
					                bot.send_video_note(f'{uid}', vn.file_id, vn.duration, vn.length)
 | 
				
			||||||
 | 
					            elif hasattr(m, 'contact') and m.contact:
 | 
				
			||||||
 | 
					                c = m.contact
 | 
				
			||||||
 | 
					                bot.send_contact(f'{uid}', c.phone_number, c.first_name, c.last_name)
 | 
				
			||||||
 | 
					            elif hasattr(m, 'location') and m.location:
 | 
				
			||||||
 | 
					                l = m.location
 | 
				
			||||||
 | 
					                bot.send_location(f'{uid}', l.latitude, l.longitude)
 | 
				
			||||||
 | 
					            elif hasattr(m, 'venue') and m.venue:
 | 
				
			||||||
 | 
					                v = m.venue
 | 
				
			||||||
 | 
					                bot.send_venue(f'{uid}', v.location.latitude, v.location.longitude, v.title, v.address, v.foursquare_id)
 | 
				
			||||||
 | 
					            elif hasattr(m, 'text') and m.text:
 | 
				
			||||||
 | 
					                txt = m.text_html
 | 
				
			||||||
 | 
					                if txt.startswith('!sign') or txt.startswith('/sign'):
 | 
				
			||||||
 | 
					                    txt = txt[5:] + f'\n\n____________\n' \
 | 
				
			||||||
 | 
					                                    f'by <a href="tg://user?id={m.from_user.id}">{escape(m.from_user.full_name)}</a>'
 | 
				
			||||||
 | 
					                bot.send_message(f'{uid}', txt, 'html')
 | 
				
			||||||
 | 
					        except Unauthorized:
 | 
				
			||||||
 | 
					            Subscriber.deleteBy(user_id=uid)
 | 
				
			||||||
 | 
					        except TelegramError:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					updater = Updater('450146961:AAGt5QRp3jS5wcHVIZOLxmqyO55iOVf6gpY', workers=4)
 | 
				
			||||||
 | 
					updater.job_queue.run_repeating(task_queue, .04)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					updater.dispatcher.add_handler(CommandHandler('start', go_away))
 | 
				
			||||||
 | 
					updater.dispatcher.add_handler(CommandHandler('stop', unsubscribe))
 | 
				
			||||||
 | 
					updater.dispatcher.add_handler(MessageHandler(Filters.all, msg))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    updater.start_polling()
 | 
				
			||||||
 | 
					    updater.idle()
 | 
				
			||||||
		Reference in New Issue
	
	Block a user