Discord Bot

Discord rules

  1. No spamming, harassment, or NSFW content.
  2. Don’t ping people over and over. Conversational pings are OK unless the user says not to do so.
  3. Keep questions in the correct channels. Forge and Scripting each have their own respective categories with a general, help, showcase, guides, and bug-report channel.
  4. Please keep questions, answers, showcases, guides, bug-reports, etc under a thread. Our goal is to have everything easily found through scrolling or searching. The general channels are the only channels that allow open discussion.
  5. Keep things in the appropriate channels.
  6. There are multiple documentations being built (as seen in #resources-and-guides), so be sure to read them before starting. You can check out ours here: https://forge-documentation.notion.site/forge-documentation/Halo-Infinite-Forge-Scripting-Documentation-fb42fcb06fa9411e89f4e89ab1da157c
  7. Read the Reddit Quick Start post (https://www.reddit.com/r/forge/comments/ytn9xw/halo_infinite_forge_quick_start_guide/) for a list of resources and tutorials.
  8. Read the Reddit Bug Report posts
    1. Week 1 - https://www.reddit.com/r/forge/comments/yu5wma/weekly_question_thread_and_bug_report_1/
    2. Week 2 - https://www.reddit.com/r/forge/comments/z16zor/weekly_question_thread_and_bug_report_2/
  9. If you have an an important issue, DM a mod directly (@root). We will try our best to help you.

Discord welcome

Welcome to the official r/forge discord! We exist to help others become the best forger they possible can. Whether you want to make a simple map or script an entire game mode, we are here to help.

Before you dive in, please read the #rules

channel. Then, come back here to get some useful starting material. This information is also available in #resources-and-guides

r/forge Official Scripting Documentation:

-**https://www.notion.so/forge-documentation/Halo-Infinite-Forge-Scripting-Documentation-fb42fcb06fa9411e89f4e89ab1da157c**

Quickstart guide on scripting:

-https://www.notion.so/forge-documentation/Quick-Start-Guide-13314f14d69548878fdd6dcb9bab41ee

Reddit Weekly Bug Reports:

-Week 1: https://www.reddit.com/r/forge/comments/yu5wma/weekly_question_thread_and_bug_report_1/

-Week 2: https://www.reddit.com/r/forge/comments/z16zor/weekly_question_thread_and_bug_report_2/

Reddit Quickstart and Tutorials:

-https://www.reddit.com/r/forge/comments/ytn9xw/halo_infinite_forge_quick_start_guide/

Node graph simulators:

-https://beta.cyclix.guide/forge/

-https://miro.com/app/board/o9J_lr0S6gU=/?invite_link_id=826821076372

Wikipedias:

-https://www.notion.so/forge-documentation/Halo-Infinite-Forge-Scripting-Documentation-fb42fcb06fa9411e89f4e89ab1da157c

-https://forgewiki.com/

-https://www.halopedia.org/User:CaptainPunch/Sandbox

Other Discords:

-ForgeWiki: https://discord.gg/7J4A6a2f8k

-ForgeHub: https://discord.gg/5gjBgcpKC6

-The Scripters Guild: https://discord.gg/VJy8FrYpzb

import { SubmissionStream, CommentStream } from "snoostorm";
import Snoowrap from "snoowrap";
import 'dotenv/config'

const credentials = {
    "userAgent": "automod-Forge-Monitor:v0.0.1",
    "clientId": process.env.R_CLIENT_ID,
    "clientSecret": process.env.R_CLIENT_SECRET,
    "username": process.env.R_USERNAME,
    "password": process.env.R_PASSWORD
}

const client = new Snoowrap(credentials)

const BOT_START = Date.now() / 1000
const forge = { subreddit: "forge", limit: 50, pollTime: 3000 }
const forgescripting = { subreddit: "forgescripting", limit: 50, pollTime: 3000 }

new SubmissionStream(client, forge).on('item', (post) => {
    if (post.created_utc < BOT_START) return

    //post.reply("")
    console.log(post)
})

new CommentStream(client, forge).on("item", (comment) => {
    if (comment.created_utc < BOT_START) return

    console.log(comment)+
})

class ForgeBot {
    static flairText = 
						{
							no_flair: "",
							scripting_help: ""
						}
		static header = ""
    static footer = "***\\n^Join ^our ^discord ^[](here)!."

    static reply(post) {
        //const postText = post.selftext_html
          const postFlair = post.flair
				  let flairResponse = flairText[postFlair]

					if(postFlair === "") {
							flairResponse = "Please use a flair on your post"
					} else if(flairResponse === null) {
							flairResponse = `(Unknown flair: ${postFlair}. Please report this to the admins.)`
					}
        return `${this.header}\\n\\n${flairResponse}\\n\\n${this.footer}`
    }
}

Submission

Submission {
  approved_at_utc: null,
  subreddit: Subreddit { display_name: 'OptnTools' },
  selftext: 'ttt',
  author_fullname: 't2_5fxe72qu',
  saved: false,
  mod_reason_title: null,
  gilded: 0,
  clicked: false,
  title: 'Test',
  link_flair_richtext: [],
  subreddit_name_prefixed: 'r/OptnTools',
  hidden: false,
  pwls: null,
  link_flair_css_class: null,
  downs: 0,
  thumbnail_height: null,
  top_awarded_type: null,
  hide_score: true,
  name: 't3_zrw1jv',
  quarantine: false,
  link_flair_text_color: 'dark',
  upvote_ratio: 1,
  author_flair_background_color: null,
  subreddit_type: 'public',
  ups: 1,
  total_awards_received: 0,
  media_embed: {},
  thumbnail_width: null,
  author_flair_template_id: null,
  is_original_content: false,
  user_reports: [],
  secure_media: null,
  is_reddit_media_domain: false,
  is_meta: false,
  category: null,
  secure_media_embed: {},
  link_flair_text: null,
  can_mod_post: false,
  score: 1,
  approved_by: null,
  is_created_from_ads_ui: false,
  author_premium: false,
  thumbnail: 'self',
  edited: false,
  author_flair_css_class: null,
  author_flair_richtext: [],
  gildings: {},
  content_categories: null,
  is_self: true,
  mod_note: null,
  created: 1671646098,
  link_flair_type: 'text',
  wls: null,
  removed_by_category: null,
  banned_by: null,
  author_flair_type: 'text',
  domain: 'self.OptnTools',
  allow_live_comments: false,
  selftext_html: '<!-- SC_OFF --><div class="md"><p>ttt</p>\\n</div><!-- SC_ON -->',
  likes: null,
  suggested_sort: null,
  banned_at_utc: null,
  view_count: null,
  archived: false,
  no_follow: true,
  is_crosspostable: true,
  pinned: false,
  over_18: false,
  all_awardings: [],
  awarders: [],
  media_only: false,
  can_gild: true,
  spoiler: false,
  locked: false,
  author_flair_text: null,
  treatment_tags: [],
  visited: false,
  removed_by: null,
  num_reports: null,
  distinguished: null,
  subreddit_id: 't5_6th5i0',
  author_is_blocked: false,
  mod_reason_by: null,
  removal_reason: null,
  link_flair_background_color: '',
  id: 'zrw1jv',
  is_robot_indexable: true,
  report_reasons: null,
  author: RedditUser { name: 'hey-im-root' },
  discussion_type: null,
  num_comments: 0,
  send_replies: true,
  whitelist_status: null,
  contest_mode: false,
  mod_reports: [],
  author_patreon_flair: false,
  author_flair_text_color: null,
  permalink: '/r/OptnTools/comments/zrw1jv/test/',
  parent_whitelist_status: null,
  stickied: false,
  url: '<https://www.reddit.com/r/OptnTools/comments/zrw1jv/test/>',
  subreddit_subscribers: 1,
  created_utc: 1671646098,
  num_crossposts: 0,
  media: null,
  is_video: false,
  comments: Listing []
}

Comment


Comment {
  subreddit_id: 't5_6th5i0',
  approved_at_utc: null,
  author_is_blocked: false,
  comment_type: null,
  link_title: 'Test',
  mod_reason_by: null,
  banned_by: null,
  ups: 1,
  num_reports: null,
  author_flair_type: 'text',
  total_awards_received: 0,
  subreddit: Subreddit { display_name: 'OptnTools' },
  link_author: 'hey-im-root',
  likes: null,
  replies: Listing [],
  user_reports: [],
  saved: false,
  id: 'j14vwet',
  banned_at_utc: null,
  mod_reason_title: null,
  gilded: 0,
  archived: false,
  collapsed_reason_code: null,
  no_follow: true,
  author: RedditUser { name: 'hey-im-root' },
  num_comments: 1,
  can_mod_post: false,
  send_replies: true,
  parent_id: 't3_zrw1jv',
  score: 1,
  author_fullname: 't2_5fxe72qu',
  over_18: false,
  report_reasons: null,
  removal_reason: null,
  approved_by: null,
  controversiality: 0,
  body: 'test',
  edited: false,
  top_awarded_type: null,
  downs: 0,
  author_flair_css_class: null,
  is_submitter: true,
  collapsed: false,
  author_flair_richtext: [],
  author_patreon_flair: false,
  body_html: '<div class="md"><p>test</p>\\n</div>',
  gildings: {},
  collapsed_reason: null,
  distinguished: null,
  associated_award: null,
  stickied: false,
  author_premium: false,
  can_gild: true,
  link_id: 't3_zrw1jv',
  unrepliable_reason: null,
  author_flair_text_color: null,
  score_hidden: false,
  permalink: '/r/OptnTools/comments/zrw1jv/test/j14vwet/',
  subreddit_type: 'public',
  link_permalink: '<https://www.reddit.com/r/OptnTools/comments/zrw1jv/test/>',
  name: 't1_j14vwet',
  author_flair_template_id: null,
  subreddit_name_prefixed: 'r/OptnTools',
  author_flair_text: null,
  treatment_tags: [],
  created: 1671646140,
  created_utc: 1671646140,
  awarders: [],
  all_awardings: [],
  locked: false,
  author_flair_background_color: null,
  collapsed_because_crowd_control: null,
  mod_reports: [],
  quarantine: false,
  mod_note: null,
  link_url: '<https://www.reddit.com/r/OptnTools/comments/zrw1jv/test/>'
}