diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0617be9..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -sw_blocklist.txt \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index e1a467d..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,128 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -abocn@protonmail.com. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. diff --git a/Middleware.ts b/Middleware.ts deleted file mode 100644 index 9586d52..0000000 --- a/Middleware.ts +++ /dev/null @@ -1,9 +0,0 @@ -export default (isOnSpamWatch) => { - return async (ctx, next) => { - if (await isOnSpamWatch(ctx.from.id)) { - console.log(`User ${ctx.from.id} is banned on SpamWatch. Blocking command.`); - return; - } - await next(); - }; -}; \ No newline at end of file diff --git a/README.md b/README.md index 4931cf1..e2ea87b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# TelegramBot-SpamWatch +# SpamWatch blocklist generator +> Put your SpamWatch API key on a config.env file. Use the .example file to see how. -[![GitHub License](https://img.shields.io/github/license/abocn/TelegramBot)](https://github.com/abocn/TelegramBot/blob/main/LICENSE) -[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff)](https://www.typescriptlang.org) - -Kowalski integration with the SpamWatch API (WIP) +Then do these commands: +``` +pip install -r requirements.txt +python main.py +``` \ No newline at end of file diff --git a/config.env.example b/config.env.example new file mode 100644 index 0000000..bf7aade --- /dev/null +++ b/config.env.example @@ -0,0 +1 @@ +SW_KEY = "Insert your SpamWatch API key here" \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..370b671 --- /dev/null +++ b/main.py @@ -0,0 +1,12 @@ +import os +from dotenv import load_dotenv +import spamwatch + +load_dotenv("config.env") + +client = spamwatch.Client(os.getenv('SW_KEY')) +bans = client.get_bans_min() + +with open('sw_blocklist.txt', 'w') as file: + for ban in bans: + file.write(f'{ban}\n') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..989a366 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +python-dotenv +spamwatch \ No newline at end of file diff --git a/spamwatch.ts b/spamwatch.ts deleted file mode 100644 index ec7a054..0000000 --- a/spamwatch.ts +++ /dev/null @@ -1,32 +0,0 @@ -import fs from 'fs'; -import path from 'path'; - -const blocklistPath = path.join(__dirname, 'sw_blocklist.txt'); - -let blocklist: string[] = []; - -const readBlocklist = () => { - try { - const data = fs.readFileSync(blocklistPath, 'utf8'); - blocklist = data.split('\n').map(id => id.trim()).filter(id => id !== ''); - } catch (error) { - if (error.code === 'ENOENT') { - console.log('WARN: SpamWatch blocklist file not found. Creating a new, blank one.\nUse your own SpamWatch API key and our generator to push the blocklist to the file.'); - fs.writeFileSync(blocklistPath, ''); - } else { - console.error('WARN: Error reading SpamWatch blocklist:', error); - } - } -}; - -const isOnSpamWatch = (userId: string) => { - return blocklist.includes(userId); -}; - -const isSpamwatchConnected = () => blocklist.length > 0; - -const getSpamwatchBlockedCount = () => blocklist.length; - -readBlocklist(); - -export { isOnSpamWatch, isSpamwatchConnected, getSpamwatchBlockedCount };