To solve this optimization problem, we need to define the decision variables, the objective function, and the constraints.

Let's denote:
- $x$ as the number of consoles sold,
- $y$ as the number of discs sold.

The profit from selling one console is $200, and from selling one disc is $30. Therefore, the total profit can be represented as $200x + 30y$.

The cost of purchasing one console is $300, and one disc is $30. The store owner can spend at most $30,000 on consoles and discs. This gives us the constraint $300x + 30y \leq 30,000$.

We also know that:
- A minimum of 20 but at most 50 consoles are sold each month: $20 \leq x \leq 50$,
- The number of discs sold is at most five times the number of consoles sold: $y \leq 5x$.

Since we cannot sell negative quantities, both $x \geq 0$ and $y \geq 0$.

The objective is to maximize the profit $200x + 30y$ under these constraints.

Here's how this problem can be represented in Gurobi Python code:

```python
from gurobipy import *

# Create a new model
m = Model("Video_Game_Store")

# Define variables
consoles = m.addVar(lb=20, ub=50, vtype=GRB.INTEGER, name="consoles")
discs = m.addVar(vtype=GRB.INTEGER, name="discs")

# Objective function: Maximize profit
m.setObjective(200*consoles + 30*discs, GRB.MAXIMIZE)

# Constraints
m.addConstr(300*consoles + 30*discs <= 30000, "Budget_Constraint")
m.addConstr(discs <= 5*consoles, "Discs_vs_Consoles")

# Solve the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Consoles to sell: {consoles.x}")
    print(f"Discs to sell: {discs.x}")
    print(f"Maximum Profit: {m.objVal}")
else:
    print("No optimal solution found")
```